标签:路径 命名 filters 日期格式 commons man 框架 没有 syn
slf4j是对日志框架实现制定的一个日志规范、标准、接口,不能独立使用,需要与具体的日志框架实现配合使用。log4j、logback、log4j2分别是三种日志框架实现,其中log4j2是log4j 1.x和logback的改进版。
下面介绍一下xml格式的log4j2配置文件的基本配置。
根节点。
属性(可选),用来定义常量,之后在其他配置项中通过${变量名}引用。
输出源,用于定义日志输出的地方,有控制台ConsoleAppender、滚动文件FileAppender、RollingRandomAccessFile等。
按照一定的策略滚动文件。
决定日志事件能否被输出。
日志输出的格式,官方文档:http://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout
日志文件的滚动策略。
默认滚动策略
<?xml version="1.0" encoding="UTF-8"?>
<!--status,log4j2自身的日志级别,OFF>FATAL>ERROR>WARN>INFO>DEBUG>TRACE>ALL-->
<!--monitorInterval,重新读取配置文件的间隔时间,单位为秒-->
<Configuration status="OFF" monitorInterval="30">
<!--Properties,属性(可选),用来定义常量,之后在其他配置项中通过${变量名}引用-->
<Properties>
<Property name="LOG_HOME">logs</Property>
<!--_TRACE_ID,业务自定义变量-->
<property name="ALL_PATTERN">[%d][%level][%thread][%X{_TRACE_ID}][%c{1.}]- %msg -%n</property>
<property name="ERROR_PATTERN">[%d][%level][%thread][%X{_TRACE_ID}][%c{1.}]- %msg -[%l]%n</property>
<property name="CHARSET">UTF-8</property>
<property name="FILE_SIZE">1GB</property>
<property name="FILE_INDEX_MAX">30</property>
</Properties>
<!--Appenders,输出源,用于定义日志输出的地方-->
<Appenders>
<!--控制台-->
<Console name="CONSOLE-APPENDER" target="SYSTEM_OUT">
<PatternLayout>
<Pattern>${ALL_PATTERN}</Pattern>
</PatternLayout>
</Console>
<!--RollingRandomAccessFile,按照一定的规则滚动文件-->
<!--name,指定Appender的名字-->
<!--fileName,当前日志文件的路径和名字-->
<!--filePattern,当发生滚动时,文件的转移和重命名规则-->
<RollingRandomAccessFile name="ALL-APPENDER"
fileName="${LOG_HOME}/appName-all.log"
filePattern="${LOG_HOME}/%d{yyyyMMdd}/appName-all-%d{yyyyMMdd}-%i.log.gz">
<!--PatternLayout,日志输出的格式-->
<PatternLayout>
<Pattern>${ALL_PATTERN}</Pattern>
</PatternLayout>
<!--Policies,日志文件滚动的策略-->
<!--TimeBasedTriggeringPolicy,和filePattern结合使用,日期格式决定时间单位,interval决定单位时间间隔;modulate,产生文件是否以0点偏移时间-->
<!--SizeBasedTriggeringPolicy,日志文件大小滚动策略-->
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${FILE_SIZE}"/>
</Policies>
<!--DefaultRolloverStrategy,默认滚动策略,max-日志文件保存的最多个数-->
<DefaultRolloverStrategy max="${FILE_INDEX_MAX}"/>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="ERROR-APPENDER"
fileName="${LOG_HOME}/appName-error.log"
filePattern="${LOG_HOME}/%d{yyyyMMdd}/appName-error-%d{yyyyMMdd}-%i.log.gz">
<!--Filters,决定日志事件能否被输出:ACCEPT(接受),DENY(拒绝),NEUTRAL(中立);onMatch-该级别及以上,onMismatch-该级别以下-->
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<Pattern>${ERROR_PATTERN}</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${FILE_SIZE}"/>
</Policies>
<DefaultRolloverStrategy max="${FILE_INDEX_MAX}"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<!--每个配置都必须有一个Root logger,没有name属性、不支持additivity属性-->
<!--level:日志输出级别,从低到高分别为:All<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF-->
<!--includeLocation:输出位置信息需要栈快照,对性能影响很大,所以异步logger默认关闭该功能,可通过设置为true打开-->
<!--AppenderRef:指定该日志输出到哪个Appender-->
<asyncRoot level="INFO" includeLocation="true">
<AppenderRef ref="CONSOLE-APPENDER"/>
<AppenderRef ref="ALL-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</asyncRoot>
<!--name:该Logger所适用的类或者类所在的包路径-->
<!--additivity:设置日志事件是否在Root logger输出,为避免重复输出,可设置为false-->
<asyncLogger name="com.xxx.xxx" level="INFO" additivity="false" includeLocation="true">
<AppenderRef ref="CONSOLE-APPENDER"/>
<AppenderRef ref="ALL-APPENDER"/>
<AppenderRef ref="ERROR-APPENDER"/>
</asyncLogger>
</Loggers>
</Configuration>
标签:路径 命名 filters 日期格式 commons man 框架 没有 syn
原文地址:https://www.cnblogs.com/watershed/p/14568571.html