Logback - 两个不同级别的相同记录器
Logback - same logger for two different levels
我已按以下方式配置我的 logback-spring.xml 文件:
<logger name="com.mypack" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="TrackingLog" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="PostBackLog" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<root level="error" includeLocation="true">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</root>
我还希望 com.mypack 的级别“trace”与“info”的行为方式相同。到目前为止,我没有取得任何成功。我需要类似
的东西
<logger name="com.mypack" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="com.mypack" level="trace" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="TrackingLog" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="PostBackLog" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<root level="error" includeLocation="true">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</root>
感谢您的帮助。
使用 if 条件设置不同的日志级别。
首先,您需要 Janino 库来进行条件记录。参考 janino 并将其添加到您的 pom.xml
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.1.6</version>
</dependency>
其二,添加环境变量设置不同的日志级别。
例如
your_key=your_value
最后,添加if条件
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{100} - %msg%n</pattern>
</encoder>
</appender>
<!-- if exists your key in environment variable -->
<if condition='isNull("your_key")'>
<!-- if your key exists -->
<then>
<logger name="com.mypack" level='debug'>
<appender-ref ref="STDOUT" />
</logger>
</then>
<!-- if your key doesn't exist -->
<else>
<logger name="com.mypack" level='info'>
<appender-ref ref="STDOUT" />
</logger>
</else>
</if>
</configuration>
我已按以下方式配置我的 logback-spring.xml 文件:
<logger name="com.mypack" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="TrackingLog" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="PostBackLog" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<root level="error" includeLocation="true">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</root>
我还希望 com.mypack 的级别“trace”与“info”的行为方式相同。到目前为止,我没有取得任何成功。我需要类似
的东西 <logger name="com.mypack" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="com.mypack" level="trace" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="TrackingLog" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="PostBackLog" level="info" additivity="false">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</logger>
<root level="error" includeLocation="true">
<appender-ref ref="CLOUD" />
<appender-ref ref="RollingFile" />
<appender-ref ref="STDOUT" />
</root>
感谢您的帮助。
使用 if 条件设置不同的日志级别。
首先,您需要 Janino 库来进行条件记录。参考 janino 并将其添加到您的 pom.xml
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.1.6</version>
</dependency>
其二,添加环境变量设置不同的日志级别。
例如
your_key=your_value
最后,添加if条件
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{100} - %msg%n</pattern>
</encoder>
</appender>
<!-- if exists your key in environment variable -->
<if condition='isNull("your_key")'>
<!-- if your key exists -->
<then>
<logger name="com.mypack" level='debug'>
<appender-ref ref="STDOUT" />
</logger>
</then>
<!-- if your key doesn't exist -->
<else>
<logger name="com.mypack" level='info'>
<appender-ref ref="STDOUT" />
</logger>
</else>
</if>
</configuration>