Log4j2 - log4j2.xml 配置
Log4j2 - log4j2.xml configuration
我正在开始新的 log4j2。我有一个问题,
我有一个 log4j2 xml 文件,我想在自己的级别保存日志。
例如,信息级别日志保存在 info.txt 文件中,错误级别日志保存在 error.txt 文件中。
这是我的 log4j2.xml 代码;
<Properties>
<Property name="log-path">logs</Property>
</Properties>
<Appenders>
<Console name="console-log" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
<RollingFile name="trace-log"
filePattern="${log-path}/trace-%d{yyyy-MM-dd}.log"
fileName="${log-path}/trace.log" >
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
<RollingFile name="info-log"
filePattern="${log-path}/info-%d{yyyy-MM-dd}.log"
fileName="${log-path}/info.log">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
<RollingFile name="error-log"
filePattern="${log-path}/error-%d{yyyy-MM-dd}.log"
fileName="${log-path}/error.log">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.test.log4j2" level="debug">
<appender-ref level="debug" ref="trace-log" />
<appender-ref level="error" ref="error-log" />
<appender-ref level="debug" ref="console-log" />
<appender-ref level="info" ref="info-log" />
</Logger>
<Root additivity="false" level="info">
<AppenderRef ref="error-log" />
</Root>
</Loggers>
感谢您的帮助。
您不需要为此定义单独的记录器。
试试这样的:
<Loggers>
<Root level="trace">
<AppenderRef level="DEBUG" ref="trace-log" />
<AppenderRef level="ERROR" ref="error-log" />
<AppenderRef level="DEBUG" ref="console-log" />
<AppenderRef level="INFO" ref="info-log" />
</Root>
</Loggers>
我使用 Filter 解决了我的问题。
<Properties>
<Property name="log-path">logs</Property>
</Properties>
<Appenders>
<Console name="console-log" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
<RollingFile name="trace-log"
filePattern="${log-path}/trace-%d{yyyy-MM-dd}.log"
fileName="${log-path}/trace.log" >
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="debug" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
<RollingFile name="info-log"
filePattern="${log-path}/info-%d{yyyy-MM-dd}.log"
fileName="${log-path}/info.log">
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
<RollingFile name="error-log"
filePattern="${log-path}/error-%d{yyyy-MM-dd}.log"
fileName="${log-path}/error.log">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef level="DEBUG" ref="trace-log" />
<AppenderRef level="ERROR" ref="error-log" />
<AppenderRef level="DEBUG" ref="console-log" />
<AppenderRef level="INFO" ref="info-log" />
谢谢。
我正在开始新的 log4j2。我有一个问题,
我有一个 log4j2 xml 文件,我想在自己的级别保存日志。 例如,信息级别日志保存在 info.txt 文件中,错误级别日志保存在 error.txt 文件中。 这是我的 log4j2.xml 代码;
<Properties>
<Property name="log-path">logs</Property>
</Properties>
<Appenders>
<Console name="console-log" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
<RollingFile name="trace-log"
filePattern="${log-path}/trace-%d{yyyy-MM-dd}.log"
fileName="${log-path}/trace.log" >
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
<RollingFile name="info-log"
filePattern="${log-path}/info-%d{yyyy-MM-dd}.log"
fileName="${log-path}/info.log">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
<RollingFile name="error-log"
filePattern="${log-path}/error-%d{yyyy-MM-dd}.log"
fileName="${log-path}/error.log">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.test.log4j2" level="debug">
<appender-ref level="debug" ref="trace-log" />
<appender-ref level="error" ref="error-log" />
<appender-ref level="debug" ref="console-log" />
<appender-ref level="info" ref="info-log" />
</Logger>
<Root additivity="false" level="info">
<AppenderRef ref="error-log" />
</Root>
</Loggers>
感谢您的帮助。
您不需要为此定义单独的记录器。
试试这样的:
<Loggers>
<Root level="trace">
<AppenderRef level="DEBUG" ref="trace-log" />
<AppenderRef level="ERROR" ref="error-log" />
<AppenderRef level="DEBUG" ref="console-log" />
<AppenderRef level="INFO" ref="info-log" />
</Root>
</Loggers>
我使用 Filter 解决了我的问题。
<Properties>
<Property name="log-path">logs</Property>
</Properties>
<Appenders>
<Console name="console-log" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
<RollingFile name="trace-log"
filePattern="${log-path}/trace-%d{yyyy-MM-dd}.log"
fileName="${log-path}/trace.log" >
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="debug" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
<RollingFile name="info-log"
filePattern="${log-path}/info-%d{yyyy-MM-dd}.log"
fileName="${log-path}/info.log">
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
<RollingFile name="error-log"
filePattern="${log-path}/error-%d{yyyy-MM-dd}.log"
fileName="${log-path}/error.log">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy modulate="true" interval="1" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef level="DEBUG" ref="trace-log" />
<AppenderRef level="ERROR" ref="error-log" />
<AppenderRef level="DEBUG" ref="console-log" />
<AppenderRef level="INFO" ref="info-log" />
谢谢。