使用 log4j 2记录日志
log4j2使用方法还是很简单的
1 需要使用的jar包有两个,
1)log4j-api-2.8.2.jar
2)log4j-core-2.8.2.jar
2 产生Logger 对象非常的简单,使用 LogManager.getLogger(name) 方法可以获取指定名称的 logger对象。其中 name 是在配置文件中的 logger。配置文件可以是多种的一般使用properties文件或者xml文件,配置文件放在classpath 指定的目录中,因为该组件默认回去classpath路径中查找 log4j2.xml文件或log4j2.properties或log4j2.jsn等。详情请查看官网
我们放到src/目录下即可。
3 配置文件,主要就是配置Loggers 和Appenders。Logger就是配置logger对象, Appender就是说明在哪输出信息。简单例子如下
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="warn" monitorInterval="600"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d [%t] %-5level %logger{36} %msg%n" /> </Console> <RollingFile name="RollingFile" fileName="logs/mylog.log" filePattern="logs/$${date:yyyy-MM}/mylog-%d{MM-dd-HH-mm}-%i.log.gz"> <PatternLayout> <Pattern>%d %-5level %c{1.} [%t] %m%n</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1"/> <SizeBasedTriggeringPolicy size="250 MB"/> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="Console" /> </Root> <Logger name="mylog" level="warn" additivity="false"> <AppenderRef ref="RollingFile"/> </Logger> </Loggers> </Configuration>
关键字说明,详细说明请查看官网
1)monitorInterval:会自动加载配置文件的时间间隔,单位是秒
PatternLayout 中的格式说明
2)%d:输出日期,默认格式,例如:2012-11-02 14:34:02,781
3)%t: 输出当前线程名称
4)%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符
5)%logger 或 %c 输出logger名称,因为Root Logger没有名称,所以没有输出
6)%msg 日志文本
7)%n 换行
在设置日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。对于Loggers中level的定义同样适用。
简单代码如下:
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.Test; public class MyLogger { private Logger myLogger = LogManager.getLogger("mylog"); @Test public void fun1(){ for(int i=0;i<10;i++){ myLogger.trace("trace message"); myLogger.info("info message"); myLogger.debug("debug message"); myLogger.warn("warn message"); myLogger.error("error message"); myLogger.fatal("fatal message"); try { Thread.sleep(1000*30); } catch (InterruptedException e) { // TODO Auto-generated catch block myLogger.error(e); } } } public static void main(String[] args) { new MyLogger().fun1(); } }
如果觉得有用,想赞助一下请移步赞助页面:赞助一下