1、maven配置:java
在porm.xml中加入:apache
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.3.2</version> </dependency>
若是不使用异步写入日志,第三个依赖能够不加入。api
2、log4j 2.0的配置文件再也不支持properties文件,改用xml。具体以下:app
<?xml version="1.0" encoding="UTF-8"?> <!-- 修改status的值为debug,能够查看log4j的装配过程;monitorInterval参数是多长时间重 新加载一遍该配置文件,这样能够在生产环境遭遇bug的时候,进行日志级别调整 --> <configuration status="off" monitorInterval="60"> <properties> <!--日志存储目录--> <property name="LOG_HOME">logs</property> <!-- 日志备份目录 --> <property name="BACKUP_HOME">logs/backup</property> </properties> <appenders> <!-- 定义控制台输出 --> <Console name="console" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss.SSS z} %-5level %class{36} %L %M - %msg%xEx%n"/> </Console> <!-- 定义文件输出 --> <RollingFile name="file" fileName="${LOG_HOME}/gvserver.log" filePattern="${BACKUP_HOME}/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss.SSS z} - %msg%xEx%n"/> <SizeBasedTriggeringPolicy size="5KB"/> </RollingFile> <!--异步写入文件--> <Async name="async"> <AppenderRef ref="file"/> </Async> </appenders> <loggers> <!-- <asyncRoot level="DEBUG"> <appender-ref ref="file"/> <appender-ref ref="console"/> </asyncRoot>--> <root level="DEBUG"> <appender-ref ref="async"/> <appender-ref ref="console"/> </root> </loggers> </configuration>
3、示例程序:异步
package com.gvsoft.log; /** * Created with IntelliJ IDEA. * ProjectName:gvMsgRouting * Date: 15/8/14 * Time: 下午6:03 * Desc: */ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class TestLog { static Logger logger = LogManager.getLogger(TestLog.class.getName()); public void test() { logger.error("this is error log!"); logger.info("this is info log!"); logger.debug("this is debuf log!"); logger.warn("this is warn log!"); logger.fatal("this is fatal log!"); } public static void main(String arg[]){ TestLog testLog = new TestLog(); testLog.test(); } }