【问题标题】:Configuring separate appenders for a library (or common jar)为库(或公共 jar)配置单独的附加程序
【发布时间】:2020-03-31 18:48:04
【问题描述】:

我正在为我的客户开发一个库,我还需要一些方法来了解消费者如何使用该库并获取有关其使用分析的信息。在我的库中,我想使用 Logstash Appender,这样如果我记录任何指标信息,它就会被发送到我们的 logstash 管道。

我应该如何支持这个额外的日志记录(用于我们的分析),这样它才不会干扰库使用者的日志记录设置。 slf4j、log4j、logback-classic、util.logging 等日志库是否支持这样的用例,我可以从库内部配置单独的附加程序?

【问题讨论】:

    标签: logging log4j slf4j java.util.logging logback-classic


    【解决方案1】:

    您可以根据需要定义任意数量的附加程序,并将您的日志记录路由到它们的任意组合。

    在某个地方有一个包含所有 log4j.xml 配置选项的教程。但是我的开发配置中的这些示例 sn-ps 应该对其进行补充,以便为您提供有关如何根据需要对其进行自定义的想法。

       <!-- 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 2021-12-21
      • 1970-01-01
      相关资源
      最近更新 更多