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”中就能看到日志信息了。
- J2EE--日志记录之log4j
- J2EE工程+Log4j日志
- J2EE工程+Log4j日志
- javaEE开发之使用log4j记录日志
- 【Log4J】Log4j记录日志配置
- log4j 日志记录
- JAVA日志记录,LOG4J
- Log4j 记录error 日志
- 服务端日志记录log4j
- JAVA log4j记录日志
- 使用log4j记录日志
- log4j日志记录
- 使用log4j记录日志
- log4j日志分类记录
- Log4j日志记录
- 使用log4j记录日志
- log4j日志记录
- 日志记录-log4j
- c++ vector
- Android studio .9.png图片报错问题解决
- 最大重叠区间数目 Maximum number of overlapping intervals
- 敌兵布阵
- javaScript闭包理解
- J2EE--日志记录之log4j
- 初学Zigbee–IO口配置
- Refueling
- 【求出所有最短路+最小割】【多校第一场】【G题】
- 设计模式_组合模式
- 数组和字符串简单练习
- dojo中DateTextBox阻止用户输入
- 阿里巴巴产品实习生23天
- PHP数据库连接mysql与mysqli的区别与用法