最近项目经常在使用调试,挂在服务器上有时候很多错误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>