我正在使用logback/slf4j来执行我的日志记录。我想解析我的日志文件来分析一些数据,所以我不想分析一个伟大的大文件(主要由调试语句组成),而是希望有两个记录器实例,每个记录器实例都记录到一个单独的文件中;一个用于分析,另一个用于所有目的日志记录。有谁知道这是可能的与Logback,或任何其他记录器的事情?Logback将不同消息记录到两个文件
108
A
回答
223
在logback中这样做很有可能。下面是一个例子配置:
<?xml version="1.0"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logfile.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<appender name="ANALYTICS-FILE" class="ch.qos.logback.core.FileAppender">
<file>analytics.log</file>
<append>true</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<!-- additivity=false ensures analytics data only goes to the analytics log -->
<logger name="analytics" level="DEBUG" additivity="false">
<appender-ref ref="ANALYTICS-FILE"/>
</logger>
<root>
<appender-ref ref="FILE"/>
</root>
</configuration>
,那么你会设置两个独立的记录器,一个用于一切,一个记录分析数据,如下所示:
Logger analytics = LoggerFactory.getLogger("analytics");
1
在我的情况
我想离开的类名作为登录名
private static final Logger log = LoggerFactory.getLogger(ScheduledPost.class);
和我有一些这样的课程,所以我logbook.xml
<!--additivity=false ensures this log data only goes to the this log, and no one more -->
<logger name="xxx.xxx.xxx.ScheduledPost" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_SCHEDULE_LOG_FILE"/>
</logger>
<logger name="xxx.xxx.xxx.GcmPost" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_SCHEDULE_LOG_FILE"/>
</logger>
<logger name="xxx.xxx.xxx.PushUtils" level="DEBUG" additivity="false">
<appender-ref ref="ASYNC_SCHEDULE_LOG_FILE"/>
</logger>
1
您可以拥有任意数量的记录器。但是,对于每个需要以不同方式记录的软件包,最好有一个。然后,该软件包及其子包中的所有类都将获得该特定的记录器。他们都可以共享根记录器,并使用additivity =“true”将其日志数据发送到根记录器appender。这里有一个例子:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="pattern" value="%date{HH:mm:ss.SSS} %-5p %logger{36}
%X{akkaSource} [%file:%line] - %m%n" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{HH:mm:ss.SSS} %-5p %logger{36} %X{akkaSource} [%file:%line] - %m%n</pattern>
</encoder>
</appender>
<appender name="abc" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/worker.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/worker-%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
<appender name="xyz" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/transformer.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${catalina.base}/logs/transformer-%d{yyyy-MM-dd_HH}.log</fileNamePattern>
<maxHistory>360</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${pattern}</pattern>
</encoder>
</appender>
<logger name="com.xxx.yyy.zzz" level="INFO" additivity="true">
<appender-ref ref="xyz"/>
</logger>
<logger name="com.aaa.bbb.ccc" level="INFO" additivity="true">
<appender-ref ref="abc"/>
</logger>
<root>
<level value="INFO" />
<appender-ref ref="STDOUT" />
</root>
相关问题
- 1. 将不同包中的日志消息记录到不同的文件中
- 2. 发送通过公共日志记录(通过httpbuilder)记录到Logback的消息
- 3. 将跟踪点消息记录到文本文件
- 4. 将队列的消息记录到文本文件
- 5. 使用不同设置记录到两个文件
- 6. 使用log4net记录到两个不同的日志文件
- 7. 如何将System.Diagnostics.Trace和System.Diagnostics.Debug消息记录到NLog文件?
- 8. 如何将消息记录到通用(更改)文件
- 9. 如何将Tomcat启动消息记录到文件?
- 10. Netty:将消息记录到文件的正确方法
- 11. SLF4J代码片段将消息记录到文件中
- 12. 将消息记录到JUnit控制台
- 13. Logback不会登录到文件
- 14. 找不到文件或目录消息
- 15. Logback仅记录到控制台,而不是文件
- 16. 春季启动logback不记录到文件
- 17. 如何将log4j配置为将不同日志级别记录到同一个记录器的不同文件
- 18. 的log4j不打印调试消息记录到文件
- 19. 将来自不同用户会话的日志消息记录到不同的日志文件中
- 20. 如何配置Logback以将记录器的不同级别记录到不同的目标?
- 21. 在Hive .hql文件中记录消息
- 22. 的logback条件记录
- 23. 将不同级别记录到多个文件Python
- 24. 在Timbre中记录到两个文件
- 25. Python logging.info()不记录消息
- 26. 自动将瓶子的消息记录到记录器
- 27. 如何将消息记录到Liberty Profile Server中的多个日志文件?
- 28. 两个collection_select将它保存为两个不同的记录
- 29. logback appender发布消息为http消息
- 30. Logback丢失我的日志消息到文件
我需要做这样的事情,这样我可以有一个不需要行饲料添加器和常规的appender到同一个文件。感谢这个信息。 – djangofan 2013-01-16 17:31:17
如果指定了不同的appender-ref,IMO additivity = false应为默认值。很多时候我们会得到一些应用程序,其中一些模块由于某些计时器事件而会非常频繁地生成日志,我们希望将这些日志分成不同的文件。 在10个不同的文件中记录相同的日志确实没有意义。所以它应该是一个非默认选项。 由于logback是一个重写,同一个作者应该修正相同的错误。 – 2015-03-23 07:39:47
我想分别在不同的文件中记录错误,调试,信息消息。这是可能的与logback.xml – Qasim 2015-06-07 14:20:37