【零碎JAVA】Log4J 教程

Log4J引入

在我们编写Java代码的时候,经常会用System.out.println(“”)来输出一些语句,来帮助我们检查代码运行是否正确,但是,当我们提交代码的时候,又会将这些输出语句注释或者删除掉,很容易出现遗漏的情况。在这样的使用前景下,就有了Log4J这个日志管理工具,他是Apache的一个开源项目,我们可以在http://logging.apache.org/log4j/1.2/download.html 中下载Log4J的相关资料。他能够版我们管理日志,管理日志的输出格式,管理日志的输出目的地(即在控制台输出,还是在文本文件中输出)。

简单的使用示例

public void fun1(){
    Logger logger = Logger.getLogger(SimpleDemo.class); //  SimpleDemo为这个类的名字
    logger.addAppender(new ConsoleAppender(new SimpleLayout()));    
    logger.setLevel(Level.WARN);

    logger.debug("Debug");
    logger.info("Info");
    logger.warn("Warn");
    logger.error("Error");
    logger.fatal("Fatal");

}

运行这个方法前,我们需要导入Log4j需要的库文件(log4j-1.2.17.jar)。运行这个方法,我们会发现,他并没有将所有的输出信息输出出来,而只输出了Warn,Error,Fatal这三个,这就涉及到日志级别的问题。

日志级别

日志级别描述
FATAL重大错误,例如系统崩溃
ERROR错误,例如某模块瘫痪
WARN警告,程序的隐患,如果不处理,将来可能就是错误
INFO信息,可以用来查看程序执行的流程
DEBUG调试,用来调试程序的bug

以上是从高到底的顺序列举了日志级别,Log4J使用Logger的setLevel()方法设置日志级别,输出的规则是将日志级别大于等于当前设置的级别的日志输出,默认为DEBUG

Log4J三个核心

Log4J的三大核心是Logger(日志器),Appender(日志输出目标),Layout(格式化器),要使用Log4J,先要设置这三个参数:

Logger:用来输出日志消息的类,它可以输出不同级别的消息,例如错误消息、警告消息等;
Appender:通常我们希望日志输出到文件中,以及控制台,也可能希望日志输出数据库,该类就表示一个输出的目标;
Layout:对输出的消息进行格式化,例如在消息中添加日期,以及级别等。

配置文件

我们可以通过配置文件的方式去配置Log4J,而不需要在代码中去设定他的Appender,Layout等信息,他支持log4j.properties和log4j.xml两种格式的配置文件,他们都需要被创建在src目录下,通常使用log4j.properties比较简便。
#log4j.properties
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
上述给出的是一个简单的配置文件
log4j.rootLogger:表示根日志器,DEBUG是指定根日志器的输出级别,只要大于等于DEBUG级别的日志就可以输出。A1是说明目的地(Appender)的名称;
log4j.appender.A1:表示目的地,org.apache.log4j.ConsoleAppender表示目的地为控制台目的地,即输出结果在控制台上显示;
log4j.appender.A1.layout:表示A1这个目的地的格式化器,org.apache.log4j.SimpleLayout表示简化格式化器。

除了设置根日志器(rootLogger),我们还可以设置其他的日志器
#log4j.properties
log4j.rootLogger=DEBUG,A1
log4j.logger.mylogger=WARN,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
这个配置文件还设置了一个名为mylogger的日志器,我们可以通过
Logger logger = Logger.getLogger(“mylogger”);获取到这个日志器

Appender

Appender是用来指定输出目标的类,我们可以叫他目的地,Log4J中常用的目的地有如下几种:
ConsoleAppender:向控制台输出日志
他的配置就不多做解释了

FileAppender:向文件输出日志
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=log.txt
log4j.appender.A1.Append=true
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout
File表示日志文件的名称,Append表示已追加的方式添加日志

DailyRollingFileAppender:向文件输出日志,每天一个日志文件;
RollingFileAppender是FileAppender的子类,它的作用是当日志文件大小超出文件大小大限时,会把日志文件转换成备份文件,然后再生成一个新的日志文件。
例如日志文件名为log.txt,设置文件大小上限为1KB,当log.txt文件的大小超出了1KB后,把log.txt的名称转换成log.txt.1,然后再生成一个log.txt,新的日志会写入到新的log.txt文件中。当log.txt的大小再次达到1KB时,把log.txt.1名称修改成log.txt.2,把log.txt修改成log.txt.1,然后再生成一个新的log.txt文件。
还可以设置文件的个数,当设置备份文件的个数为3时,表示最多可以有3个文件。当文件达到3后,再次达到1KB时,那么会删除最后一个文件。例如当前已经存在log.txt、log.txt.1、log.txt.2,这时如果log.txt又达到了1KB时,那么删除log.txt.2,然后把log.txt.1修改成log.txt.2,再把log.txt修改成log.txt.1,然后再创建log.txt文件。
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1FILE.File=log.txt
log4j.appender.A1.MaxFileSize=1KB
log4j.appender.A1.MaxBackupIndex=3
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

RollingFileAppender:向文件输出日志,当文件大小达到指定大小后,生成新文件;
DailyRollingFileAppender会根据设定的时间频率生成备份文件。
 当时间频率为yyyy-MM:按月生成备份文件;
 当时间频率为yyyy-ww:按周生成备份文件;
 当时间频率为yyyy-MM-dd:按天生成备份文件;
 当时间频率为yyyy-MM-dd-a:每天生成两次备份;
 当时间频率为yyyy-MM-dd-HH:按小时生成备份文件;
 当时间频率为yyyy-MM-dd-HH-mm:按分钟生成备份文件。
log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=log.txt
log4j.appender.A1.DatePattern=’.’yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

PatternLayout

通常,我们都是使用PatternLayout作为Layout的,他可以指定一个模板,让日志根据模板输出,模板字符如下:
 %m:信息本身;
 %c:日志器的名称;
 %d:日期,还可以指定日期的格式,例如:%d{yyyy-MM-dd HH:mm:ss};
 %p:日志级别;
 %n:换行;
 %t:当前线程;
 %l:输出日志的Java类相关信息。

在web项目中配置
log4j.rootLogger=INFO,c1, f1

log4j.appender.c1=org.apache.log4j.ConsoleAppender
log4j.appender.c1.layout=org.apache.log4j.PatternLayout
log4j.appender.c1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m [%t] %c [%l]%n

log4j.appender.f1.File=${catalina.home}/logs/myproject.txt
log4j.appender.f1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.f1.layout=org.apache.log4j.PatternLayout
log4j.appender.f1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m [%t] %c [%l]%n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值