【发布时间】:2019-05-13 20:17:07
【问题描述】:
我正在尝试将一些日志从 Apache James 保存到特定的附加程序。
Apache James 默认使用 Apache Commons Logging 并添加了 Logback。 Logback.xml 配置如下:
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<!-- Appenders for console and logs -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %highlight([%-5level]) %thread %logger{15}:%line - %msg%n%rEx</pattern>
<immediateFlush>false</immediateFlush>
</encoder>
</appender>
<appender name="JAMES" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/james.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%-5level] %thread %logger{15}:%line - %msg%n%rEx</pattern>
<immediateFlush>false</immediateFlush>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/james.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<appender name="JAMES-SERVER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/james-server.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%-5level] %thread %logger{15}:%line - %msg%n%rEx</pattern>
<immediateFlush>false</immediateFlush>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/james-server.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<logger name="org.domain.mypackage" level="DEBUG">
<appender-ref ref="JAMES-SERVER" />
</logger>
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="JAMES"/>
</root>
Apache James 以
开头java -classpath "james-server-jpa-guice.jar:james-server-jpa-guice.lib/*:james-server-jpa-guice.lib" -javaagent:james-server-jpa-guice.lib/openjpa-3.0.0.jar -Dlogback.configurationFile=./conf/logback.xml -Dworking.directory=. org.apache.james.JPAJamesServerMain >> ./logs/james.log
所有日志都可以记录到james.log,但org.domain.mypackage 上方的特定包没有记录到james-server.log,但似乎在james.log 中
对此有什么想法吗?
【问题讨论】:
-
您似乎缺少
additivity属性:<logger name="org.domain.mypackage" level="DEBUG" additivity="false"> -
@LuisMuñoz 我已将
additivity添加到相关行,这使得该包中的日志没有登录到james.log,但仍然不在james-server.log中。想法? -
该文件的权限?可能是它已经是一个空的并且属于 root 或其他用户,删除它。另外,我认为您不需要将 `>> ./logs/james.log` 添加到命令中,因为您已经有一个分配给
root日志级别的文件附加程序。您可能有重复的消息。 -
@LuisMuñoz 我已将 JAMES 附加程序中的
james.log替换为james-server.log并写入该文件,因此没有权限问题。然后我删除了>> ./logs/james.log,但之后不会记录 James 核心代码日志 - 只是 mailet 日志。我的目标是将 James 核心代码分隔为 james.log,将恶意代码日志分隔为 james-server.log。
标签: java logging logback apache-commons-logging james