从前有个老头叫<configuration>,他有两个儿子,忠厚老实的老大叫<appenders>,
而且<appenders>有三个儿子,分别叫<console>,<File>和<RollingFile>。这三个都是比较有才华的小伙子。
另外一个处事圆滑的老二叫<loggers>,年轻时放荡不羁,留恋纸醉迷金的生活,至今没有成家,可是长时间混迹在大城市中的他,倒也有些名气,好多人偷偷送礼托他办事。
这是家谱:spring
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appenders> <File></File> <console></console> <RollingFile></RollingFile> </appenders> <loggers> </loggers> </configuration>
咱们来详细介绍一下mybatis
<configuration status="OFF" monitorInterval="30"> </configuration>
status:
这是日志自身的日志。通常写off,表明关闭不显示。app
八个日志级别以及优先级排序: OFF(关闭) > FATAL(致命的) > ERROR > WARN > INFO > DEBUG > TRACE(堆栈) >
monitorInterval:
刷新此文件的时间间隔,保证修改后的文件及时生效。日志
<console name="Console" target="SYSTEM_OUT"> <!--输出日志的格式--> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </console>
很显然配置这个是大孙子可以将日志输出至控制台。code
<File name="log" fileName="log/test.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File>
二孙子的擅长将日志写在指定文件夹下的文件里。
fileName:
是生成的日志文件路径加名称以及后缀名, log/test.log指在跟目录log文件夹下的test.log
append:
的值为Bollean类型,当为true的时候 ,日志会追加,不然将覆盖。xml
<RollingFile name="RollingFileInfo" fileName="logs/info.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> </RollingFile>
SizeBasedTriggeringPolicy:一个小孙子的大小,
<ThresholdFilter level:日志级别。
小孙子擅长将老头子教的八个日志级别分类保存文件里,小孙子能够有多个,一个负责一个级别的日志,至于为何小孙子能够有多个?这不合情理?,由于他是孙悟空啊。排序
老头子见到三个孙子各个身怀绝技了,该去大城市闯荡闯荡了,可是他们的爹<appenders>,虽然稳重能干,可是对大城市的状况时一无所知。因此必须让老二<loggers>来帮这三个孙子指路。ci
在将要踏上去大城市的路上以前,二孙子<File>忽然改变了想法,他认为不去大城市也能作出成绩。get
老二<loggers>让他的助理<root>老司机,负责带<Console>和<RollingFileInfo>飞。it
<loggers> <root level="all"> <appender-ref ref="Console"/> <appender-ref ref="RollingFileInfo"/> </root> </loggers>
后来,<console>和<RollingFile>在二叔的得力助手<root>的指引下,为祖国的建设作的了巨大的贡献。正如<File>所说,<File>虽然没有二叔的指导,可是也作出了不小的成就。
下面是完整版
<?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF(关闭) > FATAL(致命的) > ERROR > WARN > INFO > DEBUG > TRACE(堆栈) > ALL --> <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,能够不设置,当设置成trace时,你会看到log4j2内部各类详细输出--> <!--monitorInterval:Log4j可以自动检测修改配置 文件和从新配置自己,设置间隔秒数--> <configuration status="OFF" monitorInterval="30"> <!--先定义全部的appender--> <appenders> <!--这个输出控制台的配置--> <console name="Console" target="SYSTEM_OUT"> <!--输出日志的格式--> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </console> <!-- fileName:是生成的日志文件路径加名称以及后缀名 append:的值为Bollean类型,当为true的时候日志回追加,不然将覆盖。 --> <File name="log" fileName="log/test.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> <!-- 这个会打印出全部的info及如下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份创建的文件夹下面并进行压缩,做为存档--> <RollingFile name="RollingFileInfo" fileName="logs/info.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"> <!--控制台只输出level及以上级别的信息(onMatch),其余的直接拒绝(onMismatch)--> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> </RollingFile> <RollingFile name="RollingFileWarn" fileName="logs/warn.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --> <DefaultRolloverStrategy max="20"/> </RollingFile> <RollingFile name="RollingFileError" fileName="logs/error.log" filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="100 MB"/> </Policies> </RollingFile> </appenders> <!--而后定义logger,只有定义了logger并引入的appender,appender才会生效--> <loggers> <!--过滤掉spring和mybatis的一些无用的DEBUG信息--> <logger name="org.springframework" level="INFO"></logger> <logger name="org.mybatis" level="INFO"></logger> <root level="all"> <appender-ref ref="Console"/> <appender-ref ref="RollingFileInfo"/> <appender-ref ref="RollingFileWarn"/> <appender-ref ref="RollingFileError"/> </root> </loggers> </configuration>