Log4J详细配置-输出到日志文件中(下一讲讲解输出到数据库中)

Log4J是在一般的工程中普遍使用到的一种日志记录工具,但是新手或者停留在应用层次上的软件工程师也许对其配置的信息没有很深入的理解。
今天我详细的学习了log4的一些配置信息,并将这样的结论以文字形式记录下来,当然其中可能存在错误的地方,虚心接受各位同仁的指导
首先我们建立一个java项目,然后导入log4j的jar包log4j.jar(这个在各大网站都能下载到)。然后在工程的根目录中添加log4j的配置文件log4j.properties
本博客的结构如下:
1、首先给出能正常输出log的相关配置和相关的测试代码,确保能使用log4j
2、对log4j的相关参数进行解释,开始吧:
log4j.properties(文件名)
log4j.rootLogger=off 
log4j.logger.com.test.liyong.log4j=all,stdout,appender1
log4j.appender.appender1=org.apache.log4j.RollingFileAppender
log4j.appender.appender1.MaxFileSize=1KB
log4j.appender.appender1.MaxBackupIndex=10
log4j.appender.appender1.File=D:/logs/log.txt
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout  
log4j.appender.appender1.layout.ConversionPattern=%c %x - %m%n 


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


测试代码:
package com.test.liyong.log4j;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Log4JTest {
Logger logger = Logger.getLogger(Log4JTest.class);
public Log4JTest() {
logger.warn("yes i do");
}
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
Log4JTest log4jTest = new Log4JTest();
}
}


配置项指标详细讲解:
指标1:log4j.rootLogger=off 这个配置项定义日志输出的级别,分别可以定义数据级别为ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF.请注意,此处配置的log4j配置文件是对整个项目都有效的。同时可以定义log日志的自定义输出流,请注意,如果自定义输出流的话一定要对自定义输出流进行有效定义
指标2:log4j.logger.com.test.liyong.log4j=all,stdout,appender1 这个指标的作用是自定义某个包输出的级别配置。当前配置的意思是包com.test.liyong.log4j下的日志输出级别为all,输出流分别是stdout(控制器)和appender1 (自定义输出流)
指标3:log4j.appender.appender1=org.apache.log4j.RollingFileAppender  
此句为定义名为appender1的输出端是哪种类型,其支持配置选项如下:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
指标4:log4j.appender.appender1.MaxFileSize 此项配置log日志文件的大小,本例中设置为1KB
指标5:log4j.appender.appender1.MaxBackupIndex=10 本例中设置为10。当当前的日志超出配置的大小时,会将日志写入到备用的日志中,而备用的日志个数由此项配置
指标6:log4j.appender.appender1.File=D:/logs/log.txt 此项配置log的输出路径和输出文件名。可以设置为${catalina.base}/logs/gionee_bis.log输出到服务器的logs文件夹中,也可以定义为文件的绝对位置
指标7:log4j.appender.appender1.layout=org.apache.log4j.PatternLayout  此项指定输出的格式为自定义格式。此项的配置可选项如下:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
因为PatternLayout在项目开发中最常用,所以我在此仅仅讲解PatternLayout的配置
指标8:log4j.appender.appender1.layout.ConversionPattern=%c %x - %m%n 因为指标7选择的是PatternLayout,所以我们需要对输出的格式进行自定义。输出格式是很重要的一个选项,大家需要按照自己不同的需求输出不同格式的日志。其配置的详细解释如下:
Log4j输出格式控制--log4j的PatternLayout参数含义  
%c 列出logger名字空间的全称,如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间
log4j配置文件参数举例
输出显示媒介
假设当前logger名字空间是“a.b.c”
%c a.b.c
%c{2} b.c
%20c (若名字空间长度小于20,则左边用空格填充)
%-20c (若名字空间长度小于20,则右边用空格填充)
%.30c (若名字空间长度超过30,截去多余字符)
%20.30c (若名字空间长度小于20,则左边用空格填充;若名字空间长度超过30,截去多余字符)
%-20.30c (若名字空间长度小于20,则右边用空格填充;若名字空间长度超过30,截去多余字符)
%c  假设当前类是“org.apache.xyz.SomeClass”
%C{1} SomeClass
%d 显示日志记录时间,{<日期格式>}使用ISO8601定义的日期格式 %d{yyyy/MM/dd HH:mm:ss,SSS} 2005/10/12 22:23:30,117
%d{ABSOLUTE} 22:23:30,117
%d{DATE} 12 Oct 2005 22:23:30,117
%d{ISO8601} 2005-10-12 22:23:30,117
%F 显示调用logger的源文件名 %F MyClass.java 
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数 %l MyClass.main(MyClass.java:129)
%L 显示调用logger的代码行 %L 129
%m 显示输出消息 %m This is a message for debug.
%M 显示调用logger的方法名 %M main
%n 当前平台下的换行符 %n Windows平台下表示\r\nUNIX平台下表示\n 
%p 显示该条日志的优先级 %p INFO 
%r 显示从程序启动时到记录该条日志时已经经过的毫秒数 %r 1215
%t 输出产生该日志事件的线程名 %t MyClass 
%% 显示一个百分号 %% %


好了,我们在此仅仅讲解将log日志输出到log文件的方法,输出到数据库的方法在下一讲会详细讲解。欢迎大家拍砖。下面总结一下
总结:
Logger类:完成日志记录,设置日志信息级别
Appender类:决定日志去向,终端、DB、硬盘
Layout类:决定日志输出的样式,例如包含当前线程、行号、时间


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值