Log4J使用小总结
来源:互联网 发布:笔顺查询软件 编辑:程序博客网 时间:2024/05/21 09:33
日志是软件系统中重要的一环,系统是否在正常运行或者自己的服务器很不幸地宕机了,都要通过系统日志进行分析。而在Java中使用日志,当然首选log4j,功能强大,使用方法简单明了,学习成本小到几乎没有。下面就简单地说明一下上午学习的成果。
Log4j是apache基金组织的开源项目,只说它是开源的,其它请东西请百度之。
1. 获取:
可以从log4j官网下载,或者在国内随处可以下载,注意以前版本它是有两个包的,现在只要一个包就可以(log4j-1.2.17.jar)
2. 集成到项目中
将之加入自己的项目中,eclipse可以build path,将它变成可爱的小奶瓶,就可以使用它的类了。
3. 创建配置文件
在工程的src目录下创建名为log4j.properties的配置文件,在文件中写入以下的内容:
说明:先照样将之些写进去,具体配置项的作用下面会有说明
<span style="font-size:14px;">log4j.rootLogger=info, stdout, log, errorlog#配置根日志log4j.Logger=search,Test###Console ####对控制台输出信息的配置log4j.appender.stdout = org.apache.log4j.ConsoleAppender#进行添加日志log4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayout#输出日志的格式匹配样式log4j.appender.stdout.layout.ConversionPattern = [%p] %d{ABSOLUTE} [%t]:%l - %m%n#输出样式,具体几个参数所说明见下面### Log ### #对输出INFO级别文件中信息的配置log4j.appender.log = org.apache.log4j.DailyRollingFileAppender#每日新建一个新的日志文件log4j.appender.log.File = log/log.log#指定的文件目录log4j.appender.log.Append = true#添加log4j.appender.log.Threshold = INFO#级别,下面会讲log4j.appender.log.DatePattern='.'yyyy-MM-ddlog4j.appender.log.layout = org.apache.log4j.PatternLayoutlog4j.appender.log.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t ]%l %m%n#指定了具体的时间格式### Error ####对输出ERROR级别文件中信息的配置log4j.appender.errorlog = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.errorlog.File = log/errorlog.loglog4j.appender.errorlog.Append = truelog4j.appender.errorlog.Threshold = ERROR log4j.appender.errorlog.DatePattern='.'yyyy-MM-ddlog4j.appender.errorlog.layout = org.apache.log4j.PatternLayoutlog4j.appender.errorlog.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t ]%L %m%n</span>
1. 创建需要写日志的类,以TestLog为例,看上半部分:
<span style="font-size:14px;">package com.heima.testlog;import org.apache.log4j.Logger;public class TestLog {public static void main(String[] args) {//获取日志对象Logger log = Logger.getLogger(Class1.class);//在日志对象中写一条日志//这条日志会在控制台打印,并保存在log/log.log(配置文件中设定)中log.info("abc");//控制台的输出信息//[INFO] 14:50:31,998 [main]:com.heima.testlog.TestLog.main(TestLog.java:12) - abc////===================================分隔线===================================//Class1.a();//控制台的输出信息//[INFO] 15:18:18,148 [main]:com.heima.testlog.Class1.a(Class1.java:8) - abc//[INFO] 15:18:18,148 [main]:com.heima.testlog.Class1.b(Class1.java:13) - abcddddd//显示的是真正写入日志的地方}}</span>
好!!!基本上已经会用Log4j了^^,是不是简单得丧心病狂,是不是没有学习成本。
下面再简单说一下log4j其它的内容,也填一下自己挖的坑。
1. 配置文件
在文件中进行了部分说明。
<span style="font-size:14px;">log4j.rootLogger=info, stdout, log, errorlog#配置根日志log4j.Logger=search,Test###Console ####对控制台输出信息的配置log4j.appender.stdout = org.apache.log4j.ConsoleAppender#进行添加日志log4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayout#输出日志的格式匹配样式log4j.appender.stdout.layout.ConversionPattern = [%p] %d{ABSOLUTE} [%t]:%l - %m%n#输出样式,具体几个参数所说明见下面### Log ### #对输出INFO级别文件中信息的配置log4j.appender.log = org.apache.log4j.DailyRollingFileAppender#每日新建一个新的日志文件log4j.appender.log.File = log/log.log#指定的文件目录log4j.appender.log.Append = true#添加log4j.appender.log.Threshold = INFO#级别,下面会讲log4j.appender.log.DatePattern='.'yyyy-MM-ddlog4j.appender.log.layout = org.apache.log4j.PatternLayoutlog4j.appender.log.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t ]%l %m%n#指定了具体的时间格式### Error ####对输出ERROR级别文件中信息的配置log4j.appender.errorlog = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.errorlog.File = log/errorlog.loglog4j.appender.errorlog.Append = truelog4j.appender.errorlog.Threshold = ERROR log4j.appender.errorlog.DatePattern='.'yyyy-MM-ddlog4j.appender.errorlog.layout = org.apache.log4j.PatternLayoutlog4j.appender.errorlog.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t ]%L %m%n</span>
下面是对具体输出信息的几个符号的说明:
%p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL%r输出自应用启动到输出该log信息耗费的毫秒数
%c输出所属的类目,通常就是所在类的全名
%t输出产生该日志事件的线程名
%n输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
要说明一下,%L与%l是不同的,%L只会显示行号,而%l会显示较多信息
2. 日志级别问题
上面已经提到了这个日志级别的问题,就是程序运行在不同的状态下会有不同的行为。
Log4j中已经定义了debug,info,warn,error和fatal等几个级别,对应级别是越来越高。只有高于某个级别,才会在那个级别上留下记录。如
logger.info(“abc”)会在INFO中留下记录,而不会在WARN和ERROR中记录信息
而logger.error(“abc”)会在ERROR及以下定义的行为中留下记录。
3. 再看上面例子中的下半部分和Class1。
<span style="font-size:14px;">package com.heima.testlog;import org.apache.log4j.Logger;public class Class1 {public static void a () {Logger log = Logger.getLogger(Class1.class);log.info(log);//[INFO] 15:43:16,375 [main]:com.heima.testlog.Class1.a(Class1.java:8) - org.apache.log4j.Logger@92b94c3log.info("abc");log.debug("i am a boy");//不会显示b();}public static void b () {Logger log = Logger.getLogger(Class1.class);log.info(log);//[INFO] 15:43:16,375 [main]:com.heima.testlog.Class1.b(Class1.java:16) - org.apache.log4j.Logger@92b94c3//可见拿到的是一个日志对象log.info("abcddddd");}}</span>
Log4j是个有用的东西,可以帮助我们高度程序和在生产环境下监控系统的行为。同时也是个比较简单的组件,这只是它的一部分功能,它还有其它强大的功能,现在能力有限,先写到这里。
- Log4J使用小总结
- 【Log4j】Log4j使用总结
- Log4j使用小例子
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结(转载)
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- Log4j使用总结
- 避免无聊的讨论
- SPFA算法(Shortest Path Faster Algorithm)最短路径快速算法,队列优化
- 黑马程序员--java--ApI常见对象
- ArrayList, Vector和LinkedList详解
- android 之 Handler 详解----(一)实现的消息传递基本原理(流程分析)
- Log4J使用小总结
- uva 213
- 餐饮管理系统思想总结
- QT打印PDF
- android:Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/ke
- Metric Manager
- Altera FPGA LCD1602液晶显示屏封装
- 都“全民阅读”了你还不装X
- Android使用HttpClient多线程访问网络错误解决方法之一