151 lines
5.6 KiB
XML
151 lines
5.6 KiB
XML
<configuration debug="true">
|
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
|
<encoder>
|
|
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
|
</encoder>
|
|
<target>System.out</target>
|
|
</appender>
|
|
|
|
<property name="fileName" value="file.log" />
|
|
<property scope="context" resource="application.properties" />
|
|
|
|
<!-- configure appenders -->
|
|
<appender name="rollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
|
<fileNamePattern>log-%d{yyyy-MM-dd}.log</fileNamePattern>
|
|
<maxHistory>30</maxHistory>
|
|
<totalSizeCap>3GB</totalSizeCap>
|
|
</rollingPolicy>
|
|
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
|
|
<maxFileSize>3MB</maxFileSize>
|
|
</triggeringPolicy>
|
|
<encoder>
|
|
<pattern>%d [%thread] %-5level %logger{50} - %msg%n</pattern>
|
|
</encoder>
|
|
</appender>
|
|
|
|
<appender name="roleSiftingAppender" class="ch.qos.logback.classic.sift.SiftingAppender">
|
|
<discriminator>
|
|
<key>userRole</key>
|
|
<defaultValue>ANONYMOUS</defaultValue>
|
|
</discriminator>
|
|
<sift>
|
|
<appender name="fileAppender" class="ch.qos.logback.core.FileAppender">
|
|
<file>${userRole}.log</file>
|
|
<layout class="ch.qos.logback.classic.PatternLayout">
|
|
<pattern>%d [%thread] %level %mdc %logger{50} - %msg%n</pattern>
|
|
</layout>
|
|
</appender>
|
|
</sift>
|
|
</appender>
|
|
|
|
<!-- configure layouts -->
|
|
<appender name="colorAppender" class="ch.qos.logback.core.ConsoleAppender">
|
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
|
<pattern>%d %green([%thread]) %highlight(%level) %logger{50} - %msg%n</pattern>
|
|
</encoder>
|
|
</appender>
|
|
|
|
<appender name="htmlAppender" class="ch.qos.logback.core.FileAppender">
|
|
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
|
<layout class="ch.qos.logback.classic.html.HTMLLayout">
|
|
<pattern>%thread%level%logger%msg</pattern>
|
|
</layout>
|
|
</encoder>
|
|
<file>log.html</file>
|
|
</appender>
|
|
|
|
<!-- configure filters -->
|
|
<appender name="STDOUT_LEVEL_FILTER_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
|
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
<level>ERROR</level>
|
|
<onMatch>ACCEPT</onMatch>
|
|
<onMismatch>DENY</onMismatch>
|
|
</filter>
|
|
<encoder>
|
|
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
|
</encoder>
|
|
<target>System.err</target>
|
|
</appender>
|
|
|
|
<appender name="STDOUT_THRESHOLD_FILTER_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
|
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
|
<level>WARN</level>
|
|
</filter>
|
|
<encoder>
|
|
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
|
</encoder>
|
|
</appender>
|
|
|
|
<appender name="STDOUT_EVALUATOR_FILTER_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
|
|
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
|
|
<evaluator class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
|
|
<expression>return (level > DEBUG && message.toLowerCase().contains("employee"));</expression>
|
|
</evaluator>
|
|
<OnMismatch>DENY</OnMismatch>
|
|
<OnMatch>NEUTRAL</OnMatch>
|
|
</filter>
|
|
<encoder>
|
|
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
|
</encoder>
|
|
</appender>
|
|
|
|
<!-- configure turbo filters -->
|
|
<turboFilter class="ch.qos.logback.classic.turbo.DuplicateMessageFilter">
|
|
<AllowedRepetitions>2</AllowedRepetitions>
|
|
</turboFilter>
|
|
|
|
<turboFilter class="com.stackify.logging.IgnoreLoggerFilter">
|
|
<LoggerName>ignoredColorLogger</LoggerName>
|
|
</turboFilter>
|
|
|
|
<!-- configure loggers -->
|
|
<logger level="info" name="rollingFileLogger" additivity="false">
|
|
<appender-ref ref="rollingFileAppender" />
|
|
</logger>
|
|
|
|
<logger level="info" name="htmlLogger" additivity="false">
|
|
<appender-ref ref="htmlAppender" />
|
|
</logger>
|
|
|
|
<logger level="info" name="roleSiftingLogger" additivity="false">
|
|
<appender-ref ref="roleSiftingAppender" />
|
|
</logger>
|
|
|
|
<logger level="info" name="colorLogger" additivity="false">
|
|
<appender-ref ref="colorAppender" />
|
|
</logger>
|
|
|
|
<logger level="info" name="ignoredColorLogger">
|
|
<appender-ref ref="colorAppender" />
|
|
</logger>
|
|
|
|
<logger level="info" name="levelFilterLogger" additivity="false">
|
|
<appender-ref ref="STDOUT_LEVEL_FILTER_APPENDER" />
|
|
</logger>
|
|
|
|
<logger level="info" name="thresholdFilterLogger" additivity="false">
|
|
<appender-ref ref="STDOUT_THRESHOLD_FILTER_APPENDER" />
|
|
</logger>
|
|
|
|
<logger level="info" name="evaluatorFilterLogger" additivity="false">
|
|
<appender-ref ref="STDOUT_EVALUATOR_FILTER_APPENDER" />
|
|
</logger>
|
|
|
|
<!-- configure root logger -->
|
|
<root level="INFO">
|
|
<appender-ref ref="STDOUT" />
|
|
</root>
|
|
|
|
<!-- configure root logger conditionally -->
|
|
<property scope="context" resource="application.properties" />
|
|
|
|
<if condition='property("env").equals("dev")'>
|
|
<then>
|
|
<root level="TRACE">
|
|
<appender-ref ref="STDOUT" />
|
|
</root>
|
|
</then>
|
|
</if>
|
|
|
|
</configuration> |