log4j2
Apache Log4j 2是对Log4j的升级,Log4j 1提供了显著的改进。在Logback的架构中修复一些固有问题时,提供了许多可用的改进。包括更先进的过滤,重载配置,支持 Log4j 1.2, SLF4J, Commons Logging 。可以将以前旧版本的日志代码,通过更换jar的方式,轻松过渡到log4j2。
日志等级
trace<debug<info<warn<error
trace | 跟踪日志,一般不用 |
---|---|
debug | 开发调试日志,一般用于跟踪错误 |
info | 输出重要信息 |
warn | 警告日志, |
error | 错误日志 |
log4j2需要的jar包
如果你直接使用的log4j2只需要引入2个jar包
log4j-api-2.11.0.jar
log4j-core-2.11.0.jar
如果是以前使用把log4j1升级至log4j2则需要
<!--如果有用到slf4j的引入下面jar,包移除以前的关联的slf4j的jar包-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<!--log4j2核心jar包--> <groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<!--log4j1升级log4j2需要引入的jar包,需要移除以前与log4j1相关的jar包--> <groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.5</version>
</dependency>
具体和外部api整合请参考官方文档
http://logging.apache.org/log4j/2.x/runtime-dependencies.html
log4j2.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration>
<Appenders>
<!-- 控制台输出-->
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="信息: %-5p %C{1} (%F:%L) - %m%n"/>
</Console>
<!-- 普通文件输出 -->
<File name="fileLog" fileName="logs/test.log">
<PatternLayout>
<Pattern>%d %-5p %C{1} (%F:%L) - %m%n</Pattern>
</PatternLayout>
</File>
<!-- 回滚文件输出 在web环境中读取 tomcat根目录-->
<RollingFile name="RollingFile" fileName="${sys:catalina.home}/webapps/logs/test.log"
filePattern="${sys:catalina.home}/webapps/logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %-5p %C{1} (%F:%L) - %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingFile>
<!--文件回滚输出,与前者的区别,采用nio读写日志 -->
<RollingRandomAccessFile name="RollingRandomAccessFile" fileName="${sys:catalina.home}/webapps/logs/test.log"
filePattern="${sys:catalina.home}/webapps/logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout>
<Pattern>%d %-5p %C{1} (%F:%L) - %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<!-- 设置包的级别 -->
<Logger name="com" level="debug"/>
<!-- 总日志级别 -->
<Root level="debug">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="fileLog"/>
<AppenderRef ref="RollingRandomAccessFile"/>
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
使用
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Main {
public static Logger logger = LogManager.getLogger(Main.class);
public static void main(String[] args){
logger.error("hello world");
}
}
注意别引错了jar包