为库(或公共jar)配置单独的附加程序



我正在为我的客户开发一个库,我还需要一些方法来了解消费者如何使用该库,并获得有关其使用分析的信息。在我的库中,我想使用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] Messagen -->
<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,同时指定附加程序将其发送到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>

最新更新