Vert.X SLF4J 日志记录
Vert.X SLF4J Logging
我正在尝试让 Vert.X 通过 SLF4J 和 运行 登录到一些奇怪的地方。我从文档的基本 vertx-default-jul-logging.properties
开始;
handlers=java.util.logging.ConsoleHandler,java.util.logging.FileHandler
java.util.logging.SimpleFormatter.format=%5$s %6$s\n
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.level=FINEST
java.util.logging.FileHandler.level=INFO
java.util.logging.FileHandler.formatter=io.vertx.core.logging.impl.VertxLoggerFormatter
# Put the log in the system temporary directory
java.util.logging.FileHandler.pattern=%t/vertx.log
.level=INFO
io.vertx.ext.web.level=FINEST
io.vertx.level=INFO
com.hazelcast.level=INFO
io.netty.util.internal.PlatformDependent.level=SEVERE
当我到达终点时,我明白了;
...
2019-10-16 08:04:49 DEBUG ZlibCodecFactory:39 - -Dio.netty.noJdkZlibDecoder: false
2019-10-16 08:04:49 DEBUG ZlibCodecFactory:42 - -Dio.netty.noJdkZlibEncoder: false
Router: 982634710 accepting request GET http://192.168.7.47:8080/metrics
Route matches: Route[ path:/metrics pattern:null handlers:[MainVerticle$$Lambda/1221310547@70a9786e] failureHandlers:[] order:0 methods:[]]@261133359
Metrics Request
路由器日志、Netty 日志等。然后,根据文档,我通过添加依赖项将所有内容重新指向 SLF4J;
compile("org.slf4j:slf4j-api:$slf4jVersion")
compile("org.apache.logging.log4j:log4j-slf4j18-impl:$log4jVersion")
compile("org.apache.logging.log4j:log4j-core:$log4jVersion")
重新指向 Vert.X 和 Netty;
System.setProperty("vertx.logger-delegate-factory-class-name", "io.vertx.core.logging.SLF4JLogDelegateFactory");
InternalLoggerFactory.setDefaultFactory(Slf4JLoggerFactory.INSTANCE);
并添加 log4j2.properties
;
status = debug
name = PropertiesConfig
filters = threshold
filter.threshold.type = ThresholdFilter
filter.threshold.level = debug
appenders = console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
现在,当我到达终点时;
2019-10-16 08:08:59 DEBUG ZlibCodecFactory:39 - -Dio.netty.noJdkZlibDecoder: false
2019-10-16 08:08:59 DEBUG ZlibCodecFactory:42 - -Dio.netty.noJdkZlibEncoder: false
Metrics Request
所以 Netty 正在记录,我也可以看到来自 Vert.X 的一些日志条目,但我不再看到我的路由器日志行。有人遇到过这个吗?我不知道我错过了什么..我已经按照这里的文档进行操作:https://vertx.io/docs/vertx-core/java/#_logging 但有些事情仍然存在..
当你需要记录器时,使用org.slf4j.LoggerFactory.getLogger
获得一个。
然后,尝试调用
System.setProperty("vertx.logger-delegate-factory-class-name", "io.vertx.core.logging.SLF4JLogDelegateFactory");
LoggerFactory.initialise();
就在您致电 Vertx.vertx()
之前和您致电 LoggerHandler.create(false, LoggerFormat.DEFAULT)
之前很久。您可能会在设置委托工厂之前创建该记录器处理程序。
最后,删除 vertx-default-jul-logging.properties
文件。另外,不要做 InternalLoggerFactory.setDefaultFactory(Slf4JLoggerFactory.INSTANCE);
考虑在将来使用 logback.groovy
而不是 properties
方法。
我正在尝试让 Vert.X 通过 SLF4J 和 运行 登录到一些奇怪的地方。我从文档的基本 vertx-default-jul-logging.properties
开始;
handlers=java.util.logging.ConsoleHandler,java.util.logging.FileHandler
java.util.logging.SimpleFormatter.format=%5$s %6$s\n
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.level=FINEST
java.util.logging.FileHandler.level=INFO
java.util.logging.FileHandler.formatter=io.vertx.core.logging.impl.VertxLoggerFormatter
# Put the log in the system temporary directory
java.util.logging.FileHandler.pattern=%t/vertx.log
.level=INFO
io.vertx.ext.web.level=FINEST
io.vertx.level=INFO
com.hazelcast.level=INFO
io.netty.util.internal.PlatformDependent.level=SEVERE
当我到达终点时,我明白了;
...
2019-10-16 08:04:49 DEBUG ZlibCodecFactory:39 - -Dio.netty.noJdkZlibDecoder: false
2019-10-16 08:04:49 DEBUG ZlibCodecFactory:42 - -Dio.netty.noJdkZlibEncoder: false
Router: 982634710 accepting request GET http://192.168.7.47:8080/metrics
Route matches: Route[ path:/metrics pattern:null handlers:[MainVerticle$$Lambda/1221310547@70a9786e] failureHandlers:[] order:0 methods:[]]@261133359
Metrics Request
路由器日志、Netty 日志等。然后,根据文档,我通过添加依赖项将所有内容重新指向 SLF4J;
compile("org.slf4j:slf4j-api:$slf4jVersion")
compile("org.apache.logging.log4j:log4j-slf4j18-impl:$log4jVersion")
compile("org.apache.logging.log4j:log4j-core:$log4jVersion")
重新指向 Vert.X 和 Netty;
System.setProperty("vertx.logger-delegate-factory-class-name", "io.vertx.core.logging.SLF4JLogDelegateFactory");
InternalLoggerFactory.setDefaultFactory(Slf4JLoggerFactory.INSTANCE);
并添加 log4j2.properties
;
status = debug
name = PropertiesConfig
filters = threshold
filter.threshold.type = ThresholdFilter
filter.threshold.level = debug
appenders = console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
现在,当我到达终点时;
2019-10-16 08:08:59 DEBUG ZlibCodecFactory:39 - -Dio.netty.noJdkZlibDecoder: false
2019-10-16 08:08:59 DEBUG ZlibCodecFactory:42 - -Dio.netty.noJdkZlibEncoder: false
Metrics Request
所以 Netty 正在记录,我也可以看到来自 Vert.X 的一些日志条目,但我不再看到我的路由器日志行。有人遇到过这个吗?我不知道我错过了什么..我已经按照这里的文档进行操作:https://vertx.io/docs/vertx-core/java/#_logging 但有些事情仍然存在..
当你需要记录器时,使用org.slf4j.LoggerFactory.getLogger
获得一个。
然后,尝试调用
System.setProperty("vertx.logger-delegate-factory-class-name", "io.vertx.core.logging.SLF4JLogDelegateFactory");
LoggerFactory.initialise();
就在您致电 Vertx.vertx()
之前和您致电 LoggerHandler.create(false, LoggerFormat.DEFAULT)
之前很久。您可能会在设置委托工厂之前创建该记录器处理程序。
最后,删除 vertx-default-jul-logging.properties
文件。另外,不要做 InternalLoggerFactory.setDefaultFactory(Slf4JLoggerFactory.INSTANCE);
考虑在将来使用 logback.groovy
而不是 properties
方法。