最近项目经常在使用调试,挂在服务器上有时候很多错误System.out输出,在tomcat控制台间隔太久时间就看不到了。就想到log4j。
首先下载最新版本的log4j,现在是2.0。打开 http://logging.apache.org/log4j/2.x/download.html 下载 apache-log4j-2.0-rc1-bin.zip
之后吧压缩包里面的log4j-api-2.0.rc1.jar和log4j-core-2.0-rc1.jar两个必须的包拷贝到项目下面。再选择两个jar右击Add to build path添加到项目中。
之后编写代码:
package log4jDemo;
import java.util.logging.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class HelloWorld {
private static Logger logger = LogManager.getLogger(HelloWorld.class);
public static void main(String[] args) {
logger.entry();
logger.info("Info Test");
logger.error("Error Test");
logger.debug("debug Test");
logger.exit();
}
}
输出结果
只显示了error的记录。 因为log4j默认设置等级为error,其他等级低的信息不会打印。所以接下来要写配置文件(设置记录等级,设置写到XX文件等)
配置文件2.0只能使用 xml或者json的方式。
我这里使用xml
在项目src目录下面建立 log4j2.xml 文件名固定的!
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<!-- 设置输出格式 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<!-- 设置将信息输入到logs目录下的app.log -->
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<SizeBasedTriggeringPolicy size="50MB"/>
</RollingFile>
</appenders>
<loggers>
<!--
设置等级,error则显示>=error等级的错误,debug则显示>=debug等级的错误(显示debug info error...)
级别顺序(高到低):FATAL > ERROR > WARN >INFO > DEBUG
FATAL level指出每个严重的错误事件将会导致应用程序的退出。
ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。
WARN level表明会出现潜在错误的情形。
INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。
DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。
-->
<root level="debug">
<!-- 添加上方配置的输出格式Console以及输出到文件RollingFile -->
<appender-ref ref="Console" />
<appender-ref ref="RollingFile"/>
</root>
</loggers>
</configuration>
现在运行输出结果:
然后项目下自动生成logs目录及app.log文件
app.log文件内容
若需要关闭log4j功能,则将log4j2.xml中 将 level="OFF" 设置为off则log4j不再记录
<root level="OFF">
<!-- 添加上方配置的输出格式Console以及输出到文件RollingFile -->
<appender-ref ref="Console" />
<appender-ref ref="RollingFile"/>
</root>