记录日志是软件开发中的重要一环。编写良好的日志代码能为运行应用提供快速的诊断信息和良好的存储结构,方便维护。记录日志也有其缺点,它会让应用变慢。为了减轻这些影响,Log4j 被设计为可靠的,更快的和可扩展的。
Log4j
主要由三部分组成:
log4j.properties
文件是 Log4j
的配置文件,默认情况下, LogManager
会在 CLASSPATH
中寻找 Log4j.properties
文件。下面看个示例
1. 引入依赖文件
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
Java 中进行调用
package com.zuojl.controller;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author ZUOJL-PC
* @version 2018/11/17 0017 15:01
*/
@Controller
public class IndexController {
private static final Logger log = Logger.getLogger(IndexController.class);
@RequestMapping("/")
@ResponseBody
public String index() {
for (String key : System.getProperties().stringPropertyNames()) {
log.debug(String.format("%s -> %s", key, System.getProperty(key)));
}
return "Hello, Log4j";
}
}
在 resources 目录下添加 log4j 配置文件
log4j.rootLogger=DEBUG,console,debug
log4j.logger.org.springframework=ERROR
# console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %x %5p [%t] %C.%M(%F:%L) | %m%n
# debug file
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.File=${catalina.home}/logs/debug.log
log4j.appender.debug.Append=true
log4j.appender.debug.Threshold=debug
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] %C.%M(%F:%L) | %m%n
log4j.appender.debug.encoding=UTF-8
# info file
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.File=${catalina.home}/logs/info.log
log4j.appender.info.Append=true
log4j.appender.info.Threshold=debug
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] %C.%M(%F:%L) | %m%n
log4j.appender.info.encoding=UTF-8
# error file
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File=${catalina.home}/logs/error.log
log4j.appender.error.Append=true
log4j.appender.error.Threshold=debug
log4j.appender.error.Target=System.err
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] %C.%M(%F:%L) | %m%n
log4j.appender.error.encoding=UTF-8
log4j.properties 的配置信息的意义:
五个级别的顺序 DEBUG < INFO < WARN < ERROR < FATAL 。
配置中的 Log4j.(logger|rootLogger).[logger-name]=level, appender1,appender..n
就是将 Appender 对象添加至 Logger 对象中。只有被添加到 Logger 中的 Appender 才会生效。
注意:这里需要注意的是不要将同一个 Appender 添加到不同的 Logger 中,否则会出现同样的日志多次打印的情况,无故消耗服务器性能。
常用的 Appender 有如下几种:
org.apache.log4j.ConsoleAppender
(控制台)。org.apache.log4j.FileAppender
(文件)。org.apache.log4j.DailyRollingFileAppender
(每天产生一个日志文件)。org.apache.log4j.RollingFileAppender
(文件大小到达指定尺寸的时候产生一个新的文件)。org.apache.log4j.WriterAppender
(将日志信息以流格式发送到任意指定的地方)。Appender 的一些属性
Threshold=DEBUG
(指定日志消息的输出最低层次)。ImmediateFlush=true
(默认值是true,意谓着所有的消息都会被立即输出)。Target=System.err
(默认情况下是:System.out,指定输出控制台)。File=${catalina.home}/logs/debug.log
(指定消息输出到 Tomcat 的 logs 文件夹下的 debug.log 文件中)。Append=false
(默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容)。MaxFileSize=100KB
(后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到 debug.log.1 文件)。MaxBackupIndex=10
(指定可以产生的滚动文件的最大数)。注意:可以使用 ${}
的形式调用变量,如果你没有定义这个变量的话会取 System.getProperties()
的值。
最常用的就是 PatternLayout
下面是其参数的意义:
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
原文:https://www.cnblogs.com/zuojl/p/15001052.html