My log has to be separated into separate files based on packages. So, Spring exceptions have to be written into spring.log
, DAO exceptions into dao.log
, Service exceptions into service.log
, and Apache Tomcat into server.log
.
At this time, only spring.log
is being written.
How could I fix this so that all the four log files were written?
<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>
Your configuration looks correct. The issue could be coming from the place where you are logging the message. The only missing piece is the log level, if you are not declaring it, the default is info
level. You need to make sure you are logging it in correct level from your code.