搭建一个 log4j 使用环境
最近在搭建一个开发环境的时候使用到了 log4j,所以就记录下使用方法以便以后查阅。
1.引入 log4j 的相关 jar 包
jar 包的引入非常简单,只需要在 pom.xml 中加入以下的 log4j 关联就行。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.9</version>
</dependency>
2.创建并使用 log4j.properties 文件
在/WEB-INF/文件夹下创建一个 log4j.properties 文件,在其中添加如下的内容:
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出 DEBUG 级别以上的日志到 logs/log.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ${webapp.root}/WEB-INF/logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出 ERROR 级别以上的日志到 logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = ${webapp.root}/WEB-INF/logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m
然后在 web.xml 中添加以下内容以完成对 log4j.properties 的调用:
<!-- log4j.properties文件 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<!-- Spring的log4j监听器 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
3.添加 log 文件,用来保存 log 信息
在/WEB-INF/logs 文件夹下创建 log.log 文件和 error.log 文件,那么在 log4j.properties 中所定义的相关 log 信息就会被写入到对应的.log 文件中。
我在这里被一个问题困扰了好久,就是无论我怎么设置,程序相关的 log 信息都是能在控制台打印出来的,但是我却怎么也无法在.log 文件看到本应该有的相关 log 信息,所有的.log 文件都一直是空的,也就是没有任何信息被写入进去。后来我发现我自己犯了一个愚蠢错误,因为实际上真正在运行的程序是/target 文件夹下的,也就是说我应该去/target 文件夹下的对应的 logs 文件夹中查看相应的文件,然不是在/src 文件夹下看对应的 log 文件,之后我去/target 文件夹也即是运行程序的文件夹下查看了对应的.log 文件,果然日志信息已经被写进去了。
4.测试日志的产生
package com.duoka.test;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* Created on 2015/12/24 22:49.
*/
@Controller
public class Test {
Logger logger = Logger.getLogger(Test.class);
@RequestMapping("/test")
public String test() {
logger.error("start server");
logger.info("asdsd");
logger.debug("asdsadas");
logger.warn("sadasdsad");
return "test";
}
}
书写一个如上的测试程序,发现在控制台和.log 文件中均可以可以产生相关的日志文件,log4j 的使用环境搭建成功。
关于如何配置 log4j.properties 文件,可以参阅 log4j.properties 文件的配置
本文链接: https://www.nosuchfield.com/2015/12/26/build-a-log4j-use-environment/
版权声明: 本博客所有文章均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!