我无法让 Logback ServerSocketReceiver 工作。我运行 Logback 自己的完整示例时遇到完全相同的问题https://logback.qos.ch/manual/receivers.html.
简化
logback.xml
:
<configuration debug="true">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%date]-%msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE" />
</root>
<receiver class="ch.qos.logback.classic.net.server.ServerSocketReceiver">
<port>3331</port>
</receiver>
</configuration>
套接字服务器甚至从未启动:
ERROR in ch.qos.logback.core.model.processor.DefaultProcessor@76b10754 - Can't handle model of type class ch.qos.logback.classic.model.ReceiverModel with tag: receiver at line 11
使用此设置完成输出:
20:22:22,951 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.4.11
20:22:22,953 |-INFO in ch.qos.logback.classic.util.ContextInitializer@305fd85d - No custom configurators were discovered as a service.
20:22:22,953 |-INFO in ch.qos.logback.classic.util.ContextInitializer@305fd85d - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
20:22:22,953 |-INFO in ch.qos.logback.classic.util.ContextInitializer@305fd85d - Constructed configurator of type class ch.qos.logback.classic.joran.SerializedModelConfigurator
20:22:22,971 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.scmo]
20:22:22,971 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.scmo]
20:22:22,978 |-INFO in ch.qos.logback.classic.util.ContextInitializer@305fd85d - ch.qos.logback.classic.joran.SerializedModelConfigurator.configure() call lasted 19 milliseconds. ExecutionStatus=INVOKE_NEXT_IF_ANY
20:22:22,978 |-INFO in ch.qos.logback.classic.util.ContextInitializer@305fd85d - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
20:22:22,978 |-INFO in ch.qos.logback.classic.util.ContextInitializer@305fd85d - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
20:22:22,979 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
20:22:22,981 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/home/x/Projects/agent-tcp-logging/server/target/classes/logback.xml]
20:22:23,067 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [CONSOLE]
20:22:23,067 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
20:22:23,071 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
20:22:23,080 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to DEBUG
20:22:23,081 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [CONSOLE] to Logger[ROOT]
20:22:23,084 |-ERROR in ch.qos.logback.core.model.processor.DefaultProcessor@76b10754 - Can't handle model of type class ch.qos.logback.classic.model.ReceiverModel with tag: receiver at line 11
20:22:23,085 |-WARN in ch.qos.logback.core.model.processor.ImplicitModelHandler - Ignoring unknown property [port] in [ch.qos.logback.classic.LoggerContext]
20:22:23,085 |-ERROR in ch.qos.logback.core.model.processor.DefaultProcessor@76b10754 - Can't handle model of type class ch.qos.logback.classic.model.ReceiverModel with tag: receiver at line 11
20:22:23,085 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@76b10754 - End of configuration.
20:22:23,086 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@71a794e5 - Registering current configuration as safe fallback point
20:22:23,086 |-INFO in ch.qos.logback.classic.util.ContextInitializer@305fd85d - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 108 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
任何帮助将非常感激。
我尝试了 Java 8、11 和 17。我尝试了 Logback 的多个版本,但更喜欢 1.3.x,因为我在生产中一直使用 Java 8。(最终我会切换到 SSLSocketReceiver/appender)
(Logback 套接字附加器/接收器的附加器端似乎工作得很好。我使用 nc 将测试 SocketAppender 连接到小型套接字服务器(https://linux.die.net/man/1/nc))
当 Logback 初始化时我得到
ERROR in ch.qos.logback.core.model.processor.DefaultProcessor@76b10754 - Can't handle model of type class ch.qos.logback.classic.model.ReceiverModel with tag: receiver at line 11
我希望 Logback 启动一个套接字服务器来开始侦听端口 3331。
如果您使用的是 logback 1.3,那么您需要注意您链接的页面上代码示例的 Canonical (1.3) 选项卡:
<receiver class="ServerSocketReceiver">
<port>3331</port>
</receiver>
接收者 xml 必须如上所示。
注意:班级是
ServerSocketReceiver
不是 ch.qos.logback.classic.net.server.ServerSocketReceiver
。