Log4j的学习--Log4j 配置文件

1、log4j配置概述

log4j有两种配置文件,log4j.propertieslog4j.xml。因为log4j是比较简单的组件,所以建议使用log4j.properties

如果你把log4j放到项目的src下(即放到classes下),并且命名为log4j.properties,那么log4j会自动加载这个配置文件,这也是我们最为常用的方式。

 

2、根日志器

在配置文件中,需要配置名为log4j.rootLogger的日志器,它就是根日志器。其他的日志器都是根日志器的子日志器,会继承根日志器的目的地,以及级别等。

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表示简化格式化器。

然后我们在Java中就可以这样子写了:

public void fun1() {
		Logger log = Logger.getLogger(Demo1.class);
		log.debug("Hello");
}

3、其他日志器

当然,也可以去配置其他的日志器,语法如下:

log4j.rootLogger=DEBUG,A1

log4j.logger.com.luowg=WARN,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

  我们不只配置了一个根日志器,还配置了一个名称为com.chj的日志器。继承关系你是懂得对吧。所有日志器如果名称是以com.chj前缀的,那么都会继承上面的配置,如果不是,那么继承的就是root日志器了。

我们下面对配置文件中的名词进行解释,有一部分是从网上借鉴过来的:

1、Appender

Appender是用来指定输出目标的类,你可以叫它目的地。上面我们使用的ConsoleAppender就是用来向控制台输出的目的地。常用的目的地有:

 ConsoleAppender:向控制台输出日志;

 FileAppender:向文件输出日志

 DailyRollingFileAppender:向文件输出日志,每天一个日志文件;

 RollingFileAppender:向文件输出日志,当文件大小达到指定大小后,生成新文件;

 

ConsoleAppender的目标是控制台!这也不多做解释

log4j.rootLogger=DEBUG,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender

log4j.appender.A1.layout=org.apache.log4j.SimpleLayout

 

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

 

RollingFileAppenderFileAppender的子类

它的作用是当日志文件大小超出文件大小大限时,会把日志文件转换成备份文件,然后再生成一个新的日志文件。

例如日志文件名为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.txtlog.txt.1log.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

 

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

 

2、Layout

 

Layout种类

  我们需要给目的地指定格式化器,这样目的地就可以按照格式化器指定的格式来输出日志信息了。我们刚刚一直都在使用SimpleLayout格式化器,而我们常用的格式化器是PatternLayout

 

PatternLayout

可以为PatternLayout指定一个模板,目的地会按模板来输出日志信息。例如模板为:hello: %m,其中%m是一个模式字符,下面介绍一下模式字符:

 %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

 

下面这个是我的配置文件,对其中都加了注释说明的了:

#debug 调试,用来调试程序的bug。
#根日志器。其他的日志器都是根日志器的子日志器,会继承根日志器的目的地,以及级别等
#只要大于等于INFO级别的日志就可以输出。c1和A1,f1是说明目的地(Appender)的名称;
log4j.rootLogger=INFO,c1,A1,f1

#ConsoleAppender日志输出到控制台
log4j.appender.c1=org.apache.log4j.ConsoleAppender

#表示c1这个目的地的格式化器,org.apache.log4j.PatternLayout是我们常用的格式化器
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

#RollingFileAppender是FileAppender的子类,
#它的作用是当日志文件大小超出文件大小大限时,会把日志文件转换成备份文件,然后再生成一个新的日志文件。
log4j.appender.A1=org.apache.log4j.RollingFileAppender 

#:指定日志消息的输出最低层次。
log4j.appender.A1.Threshold=info

#:默认值是true,意谓着所有的消息都会被立即输出。
log4j.appender.A1.ImmediateFlush=true

log4j.appender.A1.File=d\://logs/log.txt 
# 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到log.txt.1文件。
log4j.appender.A1.MaxFileSize=1KB 

#指定可以产生的滚动文件的最大数。 
log4j.appender.A1.MaxBackupIndex=3 
log4j.appender.A1.layout=org.apache.log4j.SimpleLayout 

#DailyRollingFileAppender会根据设定的时间频率生成备份文件。
log4j.appender.f1=org.apache.log4j.DailyRollingFileAppender

#:指定日志消息的输出最低层次。
log4j.appender.f1.Threshold=info

#:默认值是true,意谓着所有的消息都会被立即输出。
log4j.appender.f1.ImmediateFlush=true
#log4j.appender.f1.File=/WEB-INF/logs/file.log
log4j.appender.f1.File=d://logs/file.log

#DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分
#即对应的格式如下:
	#'.'yyyy-MM: 每月
	#'.'yyyy-ww: 每周 
	#'.'yyyy-MM-dd: 每天
	#'.'yyyy-MM-dd-a: 每天两次
	#'.'yyyy-MM-dd-HH: 每小时
	#'.'yyyy-MM-dd-HH-mm: 每分钟
log4j.appender.f1.DatePattern='.'yyyy-MM-dd 
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


 

 

 



  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值