1 Java常用的日志框架
以下是五种常用的日志框架,包含官网链接
2 Log4j日志的level
- ALL;打开所有等级的日志
- Trace;追踪每一条执行语句
- Debug;细粒度下为调试程序
- Info;粗粒度为反映程序运行主要过程
- Warn;警告信息
- Error;错误信息
- Fatal;导致程序退出的重大错误信息
- OFF;关闭所有日志信息
All----OFF日志等级从低到高,其中低等级可打印高等级日志。
3 Log4j 2配置
与log4j不同的是,Log4j 2已经不支持.properties为后缀的文件配置方法,配置文件只能为后缀格式为.xml,.json,.jsn的文件,以.xml文件为例 。
一个简单的xml配置框架,根据需要修改filename,pattern等即可
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm} %level %logger{36}-%msg%n" />
</Console>
<File name="MyTestLog" fileName="src/app/txt/MyTestLog.txt" immediateFlush="false" append="true">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm} %level %logger{36}-%msg%n" />
</File>
<RollingFile name="RollingFile" fileName="src/app/txt/MyTestLog.txt"
filePattern="src/app/txt/MyTestLog-%d{yyyy-MM-dd}.txt">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm} %level %logger{36}-%msg%n" />
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="all">
<AppenderRef ref="Console" level="error"/>
<AppenderRef ref="MyTestLog" level="info" />
<AppenderRef ref="RollingFile" level="info" />
</Loggers>
</Configuration>
Configuration之下包含两部分内容:Appenders, Loggers.
Appenders是日志的输出目的地,总共有13中不同的Appenders,主要介绍其中三种
- FileAppenders;输出到普通文件,参数name为Appenders的类型,文件的路径在filename参数中定义,输出日志的格式在patternLayout中定义,用%作为某特定字符串的标识符,如输出时间格式为yyyy-MM-dd,则pattern中为pattern= “%d{yyyy-MM-dd}”
- ConsoleAppenders;输出到控制台,同样有name和pattern参数,target参数为“SYSTEM_OUT”或"SYSTEM_ERR"
- RollingFileAppender;输出到文件,比FileAppenders功能更强大,当文件大小超过某一值时,生成一个新的文件继续输出,而这需要规定输出文件命名的格式。这种Appenders更符合实际需要,因为不太可能将日志信息都写到一个文件中。
- filename;文件路径
- filepattern;当发生rolling时, 文件的转移和命名规则
- Policies;保存当前文件,新建日志文件的策略
- TimeBased Triggering Policy;基于时间的rolling策略,可以修改interval属性来改变新建日志文件的时间
- SizeBasedTriggeringPolicy:Policies,根据日志文件的大小,当大小超过size,新建log文件
- OnStartup Triggering Policy;该策略不需要参数设置,它会自行判断log文件的创建时间和JVM的启动时间。若log文件的创建时间早于JVM的启动时间,保存原来的log文件,然后创建一个新的空白log文件。
- CompositeTriggeringPolicy,复合型策略。
Loggers是日志器,包括Root日志器和自定义日志器,用Root作为默认的日志器,使用AppenderRef指定每个Logger的名字,level指定该类日志的等级;自定义时还需要指定每个Logger的名称name(name可以是包的名字)
<Loggers>
<logger name="org.mybatis" level="INFO"></logger>
<Root level="all">
<AppenderRef ref="Console" level="error"/>
<AppenderRef ref="MyTestLog" level="info" />
</Loggers>
4 日志使用
配置好xml文件之后,将xml文件添加到项目所在的src或者包下,再添加Log4j的jar包就可以愉快地使用日志了。首先需要根据类名创建一个日志,假设类名为FlightScheduleAPP
private static final Logger logger=LogManager.getLogger(FlightScheduleApp.class);
然后就可以在程序中存储日志信息了,简单的使用方法:
logger.info("FlightScheduleApp系统退出");
logger.error("分配失败,重新选择");
根据之前的配置输出到文件或者控制台。效果如下
文件:
控制台:
Jar包:log4j 2