如何配置 logback 将单独的包记录到单独的日志文件中?
How to configure logback to log separate packages into separate log files?
我的日志必须根据包分成单独的文件。所以,Spring异常要写入spring.log
,DAO异常要写入dao.log
,服务异常要写入service.log
,ApacheTomcat要写入server.log
.
此时只有spring.log
正在写入。
我该如何解决这个问题,以便写入所有四个日志文件?
<configuration scan="true">
<appender name="daoLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/dao.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="serviceLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/service.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="springLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/spring.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="serverLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/server.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="com.example.dao">
<appender-ref ref="daoLog" />
</logger>
<logger name="com.example.service">
<appender-ref ref="serviceLog" />
</logger>
<logger name="org.springframework">
<appender-ref ref="springLog" />
</logger>
<logger name="org.apache.tomcat">
<appender-ref ref="serverLog" />
</logger>
</configuration>
您的配置看起来是正确的。问题可能出在您记录消息的地方。唯一缺少的部分是日志级别,如果您不声明它,则默认为 info
级别。您需要确保从您的代码中以正确的级别记录它。
我的日志必须根据包分成单独的文件。所以,Spring异常要写入spring.log
,DAO异常要写入dao.log
,服务异常要写入service.log
,ApacheTomcat要写入server.log
.
此时只有spring.log
正在写入。
我该如何解决这个问题,以便写入所有四个日志文件?
<configuration scan="true">
<appender name="daoLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/dao.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="serviceLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/service.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="springLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/spring.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="serverLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/server.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="com.example.dao">
<appender-ref ref="daoLog" />
</logger>
<logger name="com.example.service">
<appender-ref ref="serviceLog" />
</logger>
<logger name="org.springframework">
<appender-ref ref="springLog" />
</logger>
<logger name="org.apache.tomcat">
<appender-ref ref="serverLog" />
</logger>
</configuration>
您的配置看起来是正确的。问题可能出在您记录消息的地方。唯一缺少的部分是日志级别,如果您不声明它,则默认为 info
级别。您需要确保从您的代码中以正确的级别记录它。