2017年5月6日,近来又发现一篇关于log4j2的使用,很是详细Log4j2 简明教程 html
去年转了一篇关于log4j2的使用,那时只是简单的转文章,并无使用。如今在整理以往的资料,打算所有使用log4j2,如下是过程。程序员
一、pom.xml添加apache
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.5</version> </dependency>
二、log4j2配置文件,在resources中添加Log4j2.xml文件,内容以下,详细可参考Log4j2使用app
<?xml version="1.0" encoding="UTF-8"?> <!-- 日志级别 trace: 是追踪,就是程序推动如下,你就能够写个trace输出,因此trace应该会特别多,不过不要紧,咱们能够设置最低日志级别不让他输出。 debug: 调试么,我通常就只用这个做为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就行了么。 info: 输出一下你感兴趣的或者重要的信息,这个用的最多了。 warn: 有些信息不是错误信息,可是也要给程序员的一些提示,相似于eclipse中代码的验证不是有error 和warn(不算错误可是也请注意,好比如下depressed的方法)。 error: 错误信息。用的也比较多。 fatal: 级别比较高了。重大错误,这种级别你能够直接中止程序了,是不该该出现的错误么!不用那么紧张,其实就是一个程度的问题。 --> <Configuration status="OFF"> <!-- 定义日志存放目录 --> <properties> <property name="logPath">logs</property> </properties> <!--先定义全部的appender(输出器) --> <Appenders> <!--输出到控制台 --> <Console name="ConsoleLog" target="SYSTEM_OUT"> <!--只输出level及以上级别的信息(onMatch),其余的直接拒绝(onMismatch) --> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> <!--输出日志的格式 --> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36}:%L - %msg%n" /> <!-- <PatternLayout pattern="%-d [%t] %-5p %c{1}:%L - %m%n" /> --> </Console> <!--输出到文件 --> <File name="FileLog" fileName="${logPath}/error.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" /> </File> <!--输出到循环日志,每次大小超过size,则这size大小的日志会自动存入按年份-月份创建的文件夹下面并进行压缩,做为存档 --> <RollingFile name="RollingFileLog" fileName="${logPath}/app.log" filePattern="${logPath}/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" /> <SizeBasedTriggeringPolicy size="50MB" /> </RollingFile> </Appenders> <!--而后定义logger,只有定义了logger并引入的appender,appender才会生效 --> <Loggers> <!--创建一个默认的root的logger,记录大于level高于TRACE的信息,若是这里的level高于Appenders中的,则Appenders中也是以此等级为起点,好比,这里level="fatal",则Appenders中只出现fatal信息 --> <Root level="TRACE"> <!-- 输出器,可选上面定义的任何项组合,或全选,作到可随意定制 --> <AppenderRef ref="ConsoleLog" /> <!-- <AppenderRef ref="FileLog" /> --> <!-- <AppenderRef ref="RollingFileLog" /> --> </Root> </Loggers> </Configuration>
其中,在调试中能够只使用Console,信息较多的话开启File,正常使用过程只用RollingFileeclipse
三、在须要使用的类中添加ide
private static Logger logger = LogManager.getLogger(LogTest.class);
四、而后就可使用了,好比idea
public boolean hello() { logger.entry(); // trace级别的信息,单独列出来是但愿你在某个方法或者程序逻辑开始的时候调用,和logger.trace("entry")基本一个意思 logger.trace("我是trace信息"); logger.debug("我是debug信息"); logger.info("我是info信息"); // info级别的信息 logger.warn("我是warn信息"); logger.error("我是error信息"); // error级别的信息,参数就是你输出的信息 logger.fatal("我是fatal信息"); logger.log(Level.DEBUG, "我是Level.DEBUG信息"); // 这个就是制定Level类型的调用:谁闲着没事调用这个,也不必定哦! logger.exit(); // 和entry()对应的结束方法,和logger.trace("exit");一个意思 return false; }