日志级别简述:
trace | 追踪,就是程序推进一下,可以写个trace输出 |
debug | 调试,一般作为最低级别,trace基本不用。 |
info | 输出重要的信息,使用较多 |
warn | 警告,有些信息不是错误信息,但也要给程序员一些提示。 |
error | 错误信息。用的也很多。 |
fatal | 致命错误 |
日志输出形式
console | 输出到控制台 |
file | 输出到文件 |
日志配置的三大元素
configuration | 根节点 |
appender | 附加器,用与声明日志的打印方式,一般是Console,File,RollingFile |
loggers | 引用附加器,声明调用附加器的点,root节点是必须配置的,代表全局的日志打印配置,logger代表局部自定义的日志打印配置 |
日志配置的具体属性配置:
<?xml version="1.0" encoding="UTF-8"?>
<!--根节点Configuration两个属性:status:用来指定log4j本身的打印日志的级别 monitorinterval:用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s-->
<configuration status="info" monitorinterval="5" >
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- 自定义变量-->
<properties>
<property name="logPath" value="D:/log"/>
</properties>
<!--附加器节点 Appenders节点 : 常见的有三种子节点:Console、RollingFile、File; .-->
<appenders>
<!--Console节点用来定义输出日志到控制台的Appender-->
<!--name:指定Appender的名字.-->
<!--target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.-->
<Console name="Console" target="SYSTEM_OUT">
<!--输出格式-->
<!--SimpleLayout 以简单的形式显示-->
<!--HTMLLayout 以HTML表格显示-->
<!--PatternLayout 自定义形式显示 不设置默认为:%m%n-->
<!-- %d{HH:mm:ss.SSS} 表示输出到毫秒的时间-->
<!-- %t 输出当前线程名称-->
<!-- %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0-->
<!-- %logger 输出logger名称-->
<!-- %msg 日志文本-->
<!-- %n 换行-->
<!-- %F 输出所在的类文件名,如Log4j2Test.java-->
<!-- %L 输出行号-->
<!-- %M 输出所在方法名-->
<!-- %l 输出语句所在的行数, 包括类名、方法名、文件名、行数-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<!--File节点用来定义输出到指定位置的文件的Appender-->
<!--name:指定Appender的名字.-->
<!--fileName:指定输出日志的目的文件带全路径的文件名.-->
<file name="file" fileName="${logPath}/fileLog/myFile.log">
<!--PatternLayout 自定义形式显示 不设置默认为:%m%n-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</file>
<!--RollingFile节点用来定义超过指定条件自动删除旧的创建新的Appender-->
<!--name:指定Appender的名字.-->
<!--fileName:指定输出日志的目的文件带全路径的文件名.-->
<!--filePattern : 指定当发生Rolling时,文件的转移和重命名规则.-->
<RollingFile name="rollingFile" fileName="${logPath}/rollingFileLog/rollingFile.log" filepattern="${logPath}/rollingFileLog/rollingFile-%d{yyyy-MM-dd}_%i.log.gz">
<!--PatternLayout 自定义形式显示 不设置默认为:%m%n-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<!--Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.-->
<Policies >
<!--TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,
nterval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:
以凌晨为零点为基准线,interval是6,那么第一次滚动是在 0+6点 第二次就是 0+6+6=12点 -->
<TimeBasedTriggeringPolicy interval="6"/>
<!--SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.-->
<SizeBasedTriggeringPolicy size="10MB"/>
<!--DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性),不设置则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="5"/>
</Policies>
</RollingFile>
</appenders>
<!--在loggers中引用appender附加器 Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出-->
<loggers>
<!--Logger节点用来单独指定日志的形式,name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点。-->
<logger name="com.example" level="info" additivity="false">
<AppenderRef ref="Console"/>
</logger>
<!--若是additivity设为false,则只会在自己的appender里输出,而不会在 父Logger(一般是指root节点) 的appender里输出。-->
<Logger name="org.springframework" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<!--根节点附加器,全局-->
<root level="info">
<!-- AppenderRef子节点,用来指定该日志输出到哪个Appender.-->
<appender-ref ref="Console"/>
<appender-ref ref="file"/>
<appender-ref ref="rollingFile"/>
</root>
</loggers>
</configuration>