log4j的简单介绍-简单又详细

1、首先新建一个测试类Log4jTest:

import org.apache.log4j.Logger;
public class Log4jTest {
    private static final Logger LOG = Logger.getLogger(Log4jTest.class);
    public static void main(String[] args) {
        LOG.debug("DEBUG信息");
        LOG.info("INFO信息");
        LOG.warn("WARN信息");
        LOG.error("ERROR信息");
        LOG.error("ERROR信息显示",new IllegalArgumentException("非法参数输入"));
    }
}

加入log4j-1.2.17.jar到lib下。

如果使用maven项目,也可以选择在pom.xml中新增依赖:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

2、新建一个log4j.properties文件:

#you can save "test" as the file you want to save .
test1.logs.dir=D:/logFile/test1
test2.logs.dir=D:/logFile/test2
test3.logs.dir=D:/logFile/test3
test4.logs.dir=D:/logFile/test4

#first : output log level. 
#after : name of the output type.(can be customized according to the needs)
log4j.rootLogger=INFO, console, File, kafkaAppender, RollingFile

#output Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

#output File
log4j.appender.File = org.apache.log4j.FileAppender
log4j.appender.File.File = ${test1.logs.dir}/test1.log
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

#output DailyRollingFile
log4j.appender.kafkaAppender = org.apache.log4j.DailyRollingFileAppender
log4j.appender.kafkaAppender.File = ${test2.logs.dir}/test2.log
log4j.appender.kafkaAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

#output RollingFile
#MaxFileSize :  save file maximum
#MaxBackupIndex :  maximum number of files to save,delete the old file if exceed.
log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender
log4j.appender.RollingFile.File = ${test3.logs.dir}/test3.log
log4j.appender.RollingFile.MaxFileSize=1KB
log4j.appender.RollingFile.MaxBackupIndex=3
log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

#define log output categories under custom classes.
log4j.logger.com.log.log4jtest=ERROR, customClass

log4j.appender.customClass = org.apache.log4j.FileAppender
log4j.appender.customClass.File = ${test4.logs.dir}/test4.log
log4j.appender.customClass.layout = org.apache.log4j.PatternLayout
log4j.appender.customClass.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

3、配置文件介绍:

1、Threshold属性指定输出等级

log4j.rootLogger = [ level ] , appenderName, appenderName, …

log4j根据日志信息的重要程度,分OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL等级。

一版绝大多数情况下只会用到ERROR、WARN、INFO、DEBUG这四种等级。

例如:

假如我们指定的输出级别是WARN,那么日志输出的时候只会打印FATAL、ERROR、WARN三种信息。

假如我们指定的输出级别是DEBUG,那么日志输出的时候只会打印FATAL、ERROR、WARN、INFO、DEBUG五种信息。

2、appender输出类型配置

Log4j官方的appender给出了一下几种实现:

       org.apache.log4j.ConsoleAppender                 (输出到控制台)  

       org.apache.log4j.FileAppender                          (打印出文件)

       org.apache.log4j.DailyRollingFileAppender      (每天产生一个日志文件),针对日志每天日质量不大的情况  

       org.apache.log4j.RollingFileAppender               (文件大小到达指定尺寸的时候产生一个新的文件),  针对日志量较大情况

       org.apache.log4j.WriterAppender                       (将日志信息以流格式发送到任意指定的地方)这种不常用。

 

org.apache.log4j.RollingFileAppender有两个重要的配额:

        MaxFileSize :是日志文件的最大尺寸;根据实际需求来定 10KB 100KB也行

        MaxBackupIndex:是日志文件的个数,假如超过了,考虑到的是硬盘的容量问题则覆盖掉最旧的,根据需求来定。

3、Append属性指定是否追加内容

Log4j默认是不断的把日志内容追加到日志文件;

例如:log4j.appender.File.Append = true   (默认是true)

假如我们设置成false 就不追加了直接覆盖前面的内容;

4、layout输出日志信息格式

Log4j提供的layout有以下几种

        org.apache.log4j.HTMLLayout        (以HTML表格形式布局),  

        org.apache.log4j.PatternLayout      (可以灵活地指定布局模式)  

        org.apache.log4j.SimpleLayout      (包含日志信息的级别和信息字符串),  

        org.apache.log4j.TTCCLayout        (包含日志产生的时间、线程、类别等等信息)

这里重点掌握PatternLayout形式的即可,其他的作为了解。

5、指定的打印信息的具体格式ConversionPattern

%m 输出代码中指定的消息;

%M 输出打印该条日志的方法名;

%p 输出优先级,即DEBUG,INFO , WARN,ERROR,FATAL;

%r 输出自应用启动到输出该log信息耗费的毫秒数;

%c 输出所属的类目,通常就是所在类的全名;

%t 输出产生该日志事件的线程名;

%n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,默认:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;

%l 输出日志事件的发生位置,及在代码中的行数;

6、定义自定义类下的日志输出类别

#define log output categories under custom classes.
log4j.logger.com.log.log4jtest=ERROR, customClass

log4j.appender.customClass = org.apache.log4j.FileAppender
log4j.appender.customClass.File = ${test4.logs.dir}/test4.log
log4j.appender.customClass.layout = org.apache.log4j.PatternLayout
log4j.appender.customClass.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

 

指定com.log.log4jtest包下的所有类的等级为ERROR。可以把com.log.log4jtest改为自己项目所用的包名。

注意:该类下面的代码运行打印出的日志,会影响到前面几项设置的输出结果。不在该类的代码不受影响。

例如:下面相同代码在不同的类下运行时,控制台打印输出的内容。

由于指定com.log.log4jtest类下面的输出级别是ERROR,所以前面设置控制台输出级别是INFO的信息受到影响 。

这里要引起注意!!!!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值