log4j不同的类输出到不同的日志文件中

时间:2021-03-01 21:51:20

1、log4j简介

Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。

  • loggers

    Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。

  • Appenders

禁用和使用日志请求只是Log4j的基本功能,Log4j日志系统还提供许多强大的功能,比如允许把日志输出到不同的地方,如控制台(Console)、文件(Files)等,可以根据天数或者文件大小产生新的文件,可以以流的形式发送到其它地方等等。

常使用的类如下:

org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

配置模式:
log4j.appender.appenderName = className
log4j.appender.appenderName.Option1 = value1

log4j.appender.appenderName.OptionN = valueN

2、 Maven引入

   <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.3</version>
</dependency>

3、详细配置
日志文件:log4j.properties

log4j.rootLogger=DEBUG,console
log4j.logger.test =DEBUG,test
log4j.logger.test1 =DEBUG,test1


log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.threshold=INFO
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n


log4j.appender.test=org.apache.log4j.RollingFileAppender
log4j.appender.test.Append=true
log4j.appender.test.File=./td-test/test.log
log4j.appender.test.Threshold=INFO
log4j.appender.test.layout=org.apache.log4j.PatternLayout
log4j.appender.test.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.test.MaxFileSize=10MB
log4j.appender.test.file.MaxBackupIndex=3
log4j.appender.test.File.Encoding = UTF-8


log4j.appender.test1=org.apache.log4j.RollingFileAppender
log4j.appender.test1.Append=true
log4j.appender.test1.File=./td-test/test1.log
log4j.appender.test1.Threshold=INFO
log4j.appender.test1.layout=org.apache.log4j.PatternLayout
log4j.appender.test1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.test1.MaxFileSize=10MB
log4j.appender.test1.file.MaxBackupIndex=3
log4j.appender.test1.File.Encoding = UTF-8





4、测试使用


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* User: ysl
* Date: 2016/10/21
* Time: 18:18
*/

public class Test {

private static final Logger logger1 = LoggerFactory.getLogger("test");
private static final Logger logger2 = LoggerFactory.getLogger("test1");


public static void main(String[] args )
{
logger1.info("@@@@@@@@@@@@@@@");
logger2.info("#######################");

}
}

5、总结
对于不同类,输出日志到不同的文件,有时候会有这种需求。一方面避免了所有的日志文件都输出到一个文件中导致日志文件过大,不易寻找要寻找的内容。另一方面也可以通过这种方式使得有些日志能够被收集起来,加以统计分析。