我正在为我的客户开发一个图书馆,我还需要一些方法来了解消费者如何使用图书馆并获取有关其使用分析的信息。在我的库中,我想使用 Logstash Appender,这样如果我记录任何指标信息,它就会被发送到我们的 logstash 管道。
我应该如何支持这个额外的日志记录(用于我们的分析),这样它就不会干扰库使用者的日志记录设置。slf4j、log4j、logback-classic、util.logging 等日志库是否支持这样的用例,我可以从库内部配置单独的附加程序?
我正在为我的客户开发一个图书馆,我还需要一些方法来了解消费者如何使用图书馆并获取有关其使用分析的信息。在我的库中,我想使用 Logstash Appender,这样如果我记录任何指标信息,它就会被发送到我们的 logstash 管道。
我应该如何支持这个额外的日志记录(用于我们的分析),这样它就不会干扰库使用者的日志记录设置。slf4j、log4j、logback-classic、util.logging 等日志库是否支持这样的用例,我可以从库内部配置单独的附加程序?
您可以根据需要定义任意数量的附加程序,并将您的日志记录路由到它们的任意组合。
在某个地方有一个包含所有 log4j.xml 配置选项的教程。但是我的开发配置中的这些示例片段应该补充它,以便为您提供有关如何根据需要自定义它的想法。
<!-- DEFAULT appender -->
<appender name="FILE" class="net.cndc.log4j.appender.CndcDateRollingFileAppender">
<param name="File" value="/work/appLogs/tomcat9-2020-test/apps.txt"/>
<param name="MaxFileSize" value="100KB" /> <!-- 10KB for testing, raise to 200KB -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<!-- EMAIL appender -->
<appender name="EMAIL" class="net.cndc.log4j.appender.CndcDateRollingFileAppender">
<param name="File" value="/work/appLogs/tomcat9-2020-test/email.txt"/>
<param name="MaxFileSize" value="1MB" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<param name="Threshold" value="DEBUG"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n"/>
</layout>
</appender>
log4j.xml 底部的这段代码告诉它将所有日志记录发送到 CONSOLE 和 FILE 附加程序:
<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
最后,不合格的类别将内容发送到 CONSOLE 和 FILE,同时专门指定 appender 将其发送到 EMAIL 日志。
<category name="net.cndc">
<priority value="DEBUG"/>
</category>
... and others like this one for other packages
<category name="net.cndc.ws.email" additivity="false">
<priority value="INFO"/>
<appender-ref ref="EMAIL" />
</category>