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("分配失败,重新选择");

根据之前的配置输出到文件或者控制台。效果如下

文件:

java 修改日志级别 java中的日志级别_ci


控制台:

java 修改日志级别 java中的日志级别_xml文件_02


Jar包:log4j 2