Java Stream API Logger is an instrumentation library for logging of API methods returning Stream. It is needed when you want to understand what happens in the Streams created inside of your code.
java -Xbootclasspath/a:javassist-3.25.0-GA.jar;slf4j-api-2.0.0-alpha0.jar;java-stream-api-logger-1.0.jar -javaagent:java-stream-api-logger-1.0.jar <YourClass>
-Xbootclasspath/a is needed because java-stream-api-logger-1.0.jar contains a class injected into instrumented classes.
javassist-3.25.0-GA.jar;slf4j-api-2.0.0-alpha0.jar are needed because java-stream-api-logger-1.0.jar uses them.
Your project needs to have a runtime dependency to any SLF4J implementation, e.g. runtime 'ch.qos.logback:logback-classic:1.3.0-alpha4', to see log messages.
package com.peshchuk.java.stream.api.logger.demo;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
final Integer min = Stream.iterate(1, i -> i + 1)
.sequential()
.map(i -> i + 1)
.limit(5)
.filter(i -> i % 2 == 0)
.skip(1)
.distinct()
.sorted()
.peek(i -> System.out.printf("Peek: %d\n", i))
.min(Integer::compareTo)
.orElse(-1);
System.out.printf("Min: %d\n\n", min);
}
}22:29:35.337 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.iterate - 1 (Test.java:17)
22:29:35.339 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.map - 2 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.limit - 2 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.filter - 2 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.iterate - 2 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.map - 3 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.limit - 3 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.iterate - 3 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.map - 4 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.limit - 4 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.filter - 4 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.skip - 4 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.distinct - 4 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.iterate - 4 (Test.java:17)
22:29:35.340 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.map - 5 (Test.java:17)
22:29:35.341 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.limit - 5 (Test.java:17)
22:29:35.341 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.iterate - 5 (Test.java:17)
22:29:35.341 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.map - 6 (Test.java:17)
22:29:35.341 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.limit - 6 (Test.java:17)
22:29:35.341 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.filter - 6 (Test.java:17)
22:29:35.341 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.skip - 6 (Test.java:17)
22:29:35.341 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.distinct - 6 (Test.java:17)
22:29:35.342 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.sorted - 4 (Test.java:17)
Peek: 4
22:29:35.345 [main] DEBUG com.peshchuk.java.stream.api.logger.demo.Test.main.sorted - 6 (Test.java:17)
Peek: 6
Min: 4