J2EE--日志记录之log4j

来源:互联网 发布:开淘宝店照片怎么拍 编辑:程序博客网 时间:2024/05/14 16:39

公司的项目中有同事用到了log4j和slf4j,作为一名J2EE的小白,参考网上大神们的解释和度娘百科,做一点记录。本文先来记录log4j。

log4j是一个强大的日志记录开源包,可以单单改变配置文件,就能更改日志的内容和格式,而不需要改变一点代码,这对开发者来说是十分方便的。其实度娘百科已经是十分详细的了。

配置文件设置

第一步

新建一个文件,名为“log4j.properties”,这个文件作为log4j的配置文件,修改这个文件将能改变很多东西。

第二步

1)写入配置内容

log4j.rootCategory = INFO, stdout, filelog4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = %n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%nlog4j.appender.file = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.file.File = ./demo_log4j.loglog4j.appender.file.layout = org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern = %n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%nlog4j.appender.file.Threshold = INFOlog4j.appender.file.DatePattern = '.'yyyy-MM-dd

2)配置说明
第一行,log4j.rootCategory = INFO, stdout, file
形式为:log4j.rootCategory = [level], appenderName, appenderName, …
这一句是将等级为INFO的日志信息输出到stdout和file这个目的位置,stdout和file的定义在下面的代码中(分别为3~5行和7~10行),这两个名字可任意。等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。一般来说都只是使用四个级别(按优先级从高到低)分别是ERROR、WARN、INFO、DEBUG。设定一个级别,会把比它高的级别的日志信息也打印出来。

第三行,log4j.appender.stdout = org.apache.log4j.ConsoleAppender
这里设置目的位置appender,可选的值有:
1. org.apache.log4j.ConsoleAppender(控制台)
2. org.apache.log4j.FileAppender(文件)
3. org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
4. org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.stdout.MaxFileSize=100KB设置大小,也可通过log4j.appender.stdout.MaxBackupIndex=1设置为保存一个备份文件。其中stdout为appender的名称。
5. org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

第四行,log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
这里设置日志信息的格式(布局)Layout,可选的值有:
1. org.apache.log4j.HTMLLayout(以HTML表格形式布局)
2. org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
3. org.apache.log4j.SimpleLayout(包含日志信息的级别和信息的字符串)
4. org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

第五行,log4j.appender.stdout.layout.ConversionPattern = %n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
这里设置日志规则,参数解释如下:
1. %m:输出代码中指定的信息
2. %M:输出打印该条日志的方法名
3. %p:输出优先级,即DEBUG、INFO、WARN、ERROR、FATAL
4. %r:输出自应用启动到输出该条日志耗费的毫秒数
5. %c:输出所属的类目,通常就是所在类的全名
6. %t:输出产生该日志事件的线程名
7. %n:输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
8. %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2015-07-21 23:06:34.325;
8. %l:输出日志事件的发生位置,
9. %L:在代码中的行数。
例子:%n[%d]-[%p]-[Thread:%t: %l]%n\u4FE1\u606F: %m%n,其中“\u4FE1\u606F”为“信息”,则输出为:
[2015-07-21 23:22:14,577]-[WARN]-[Thread:main: com.gaussli.Main.main(Main.java:15)]
信息: a,其中“a”为输出的自定义信息。

第十一行,log4j.appender.file.Threshold = INFO
这里设置只输出输出INFO级别以上的日志,则例子中DEBUG信息就不会写入文件了

第十二行,log4j.appender.file.DatePattern = ‘.’yyyy-MM-dd
这里设置每日日志生成后缀格式,方式有:
1. ‘.’ yyyy-MM:每月
2. ‘.’ yyyy-MM-dd:每日
3. ‘.’ yyyy-MM-dd-a:每日分两次(半日)
4. ‘.’ yyyy-MM-dd-HH:每小时
5. ‘.’ yyyy-MM-dd-HH-mm:每分钟
6. ‘.’ yyyy-ww:每周

Java代码调用

// 导入log4j必要的包import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;public class Main {    // 初始化日志对象,输入参数为当前类的类对象    final Logger log = Logger.getLogger(getClass());    public static void main(String[] args) {        // 指定log4j的配置文件        PropertyConfigurator.configure("src\\resources\\log4j.properties");        Main mainTest = new Main();        // 调用debug日志打印        mainTest.log.debug("a");        // 调用info日志打印        mainTest.log.info("a");        // 调用warn日志打印        mainTest.log.warn("a");        // 调用error日志打印        mainTest.log.error("a");    }}

至此,运行应用,在控制台和本地的新增文件“demo_log4j.log”中就能看到日志信息了。

0 0
原创粉丝点击