
Below is an example of some configuration that I use to do the same thing. I hate that there is a requirement in my organization to do this however, it's the wrong way about it if you ask me. For my money, I think you need to strive for log centralization and this represents an effort to decentralize logs. There are a set of tools that I'd recommend using for log centralization. Namely, Logstash backed by Elasticsearch and Kibana. I'd urge you to look at how these tools can help you. <?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true"> <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> <resetJUL>true</resetJUL> </contextListener> <property name="contextName" value="someapp" /> <contextName>${contextName}</contextName> <jmxConfigurator /> <appender name="default" class="ch.qos.logback.core.rolling.RollingFileAppender"> <append>true</append> <file>${logging.log_dir}/${contextName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <cleanHistoryOnStart>true</cleanHistoryOnStart> <maxHistory>${logging.appender_max_file_history:-1}</maxHistory>
<fileNamePattern>${logging.log_archive_dir}/${contextName}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${logging.appender_max_file_size}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="${logging.encoder.default}" /> </appender> <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <append>true</append> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <file>${logging.log_dir}/${contextName}-errors.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <cleanHistoryOnStart>true</cleanHistoryOnStart> <maxHistory>${logging.appender_max_file_history:-1}</maxHistory>
<fileNamePattern>${logging.log_archive_dir}/${contextName}-errors.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${logging.appender_max_file_size}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="${logging.encoder.default}" /> </appender> <root level="${logging.level.default}"> <appender-ref ref="default"/> <appender-ref ref="error"/> </root> </configuration>
On Wed, Mar 12, 2014 at 11:51 AM, Chandraprakash < chandraprakash.kalwar@gmail.com> wrote:
Dear Troy,
Thanks a lot to help with the appender configurations. I applied the similar configurations and it is working for me now :-)
Now I am trying to get all the 'info' and 'error' level logs in one file(infoLogAppender) and all the 'error' level logs in a sepaate log(errorLogAppender) as well. I tried it using 'LevelFilter' and using 'logger' as well, but it did not work. My configurations looks like:
<property name="logging.log_dir" value="C:/Logs"/> <property name="logging.log_archive_dir" value="C:/Logs/Archive"/> <property name="infoLogName" value="someInfoLog"/> <property name="errorLogName" value="someErrorLog"/> <property name="consoleLogName" value="consoleLog"/>
<appender name="infoLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <append>true</append> <file>${logging.log_dir}/${infoLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <maxHistory>10</maxHistory>
<fileNamePattern>${logging.log_archive_dir}/${infoLogName}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10KB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder>
<pattern>%-30(%d{HH:mm:ss.SSS} [%thread]) %-5level %-20.50logger{35} - %msg%n</pattern>
<immediateFlush>false</immediateFlush> </encoder> </appender>
<appender name="errorLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <append>true</append> <file>${logging.log_dir}/${errorLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <maxHistory>10</maxHistory>
<fileNamePattern>${logging.log_archive_dir}/${errorLogName}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder>
<pattern>%-30(%d{HH:mm:ss.SSS} [%thread]) %-5level %-20.50logger{35} - %msg%n</pattern>
<immediateFlush>true</immediateFlush> </encoder> </appender>
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <append>true</append> <file>${logging.log_dir}/${consoleLogName}.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <maxHistory>10</maxHistory>
<fileNamePattern>${logging.log_archive_dir}/${consoleLogName}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>1MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder>
<pattern>%-30(%d{HH:mm:ss.SSS} [%thread]) %-5level %-20.50logger{35} - %msg%n</pattern>
<immediateFlush>true</immediateFlush> </encoder> </appender>
<root level="TRACE" additivity="true"> <appender-ref ref="infoLogAppender" /> <appender-ref ref="errorLogAppender" /> <appender-ref ref="consoleAppender" /> </root>
I get some logs on console as well(mainly JPA related). I want them in a separate log file(consoleAppender). It is also not working.
Could you help here as well? Might be with some example?
Regards, Chandra
-- View this message in context: http://logback.10977.n7.nabble.com/Logback-Rolling-policy-issue-tp13350p1338... Sent from the Users mailing list archive at Nabble.com. _______________________________________________ Logback-user mailing list Logback-user@qos.ch http://mailman.qos.ch/mailman/listinfo/logback-user