Log4J使用小总结

来源:互联网 发布:笔顺查询软件 编辑:程序博客网 时间:2024/05/21 09:33
Log4J使用小总结

日志是软件系统中重要的一环,系统是否在正常运行或者自己的服务器很不幸地宕机了,都要通过系统日志进行分析。而在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输出优先级,即DEBUGINFOWARNERRORFATAL 
  %r输出自应用启动到输出该log信息耗费的毫秒数 
  %c输出所属的类目,通常就是所在类的全名 
  %t输出产生该日志事件的线程名 
  %n输出一个回车换行符,Windows平台为“\r\n”Unix平台为“\n” 
  %d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:20021018 221028921 
  %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是个有用的东西,可以帮助我们高度程序和在生产环境下监控系统的行为。同时也是个比较简单的组件,这只是它的一部分功能,它还有其它强大的功能,现在能力有限,先写到这里。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 实体店买手机不给发票怎么办 小孩学英语字母怎么都记不住怎么办 聊客老是提示网络连接失败怎么办? 天猫购物漏发客服不理怎么办 京东二维码被骗怎么办联系客服号码 京东客服打电话来让自己退款怎么办 淘宝上买到的衣服是坏的怎么办 淘宝上买到的产品是坏的怎么办? 在淘宝买到东西是坏的怎么办 冰箱冷冻室门生锈变形关不严怎么办 诲信电冰箱电脑板坏了怎么办 冰箱里放了热水后就不制冷了怎么办 双温冰柜冷藏矿泉水不冰怎么办 美的电饭煲e一传感器也没坏怎么办 美的电饭煲不工作显示C3怎么办 美的电饭煲啪一声响不工作了怎么办 误给宝宝吃了坏的饭怎么办 鼠标没反应键盘指示灯不亮怎么办 新买变频冰箱风机声音大怎么办 三星手机玩王者荣耀一直闪退怎么办 刚申请的阿里大宝卡不想要了怎么办 国美刚买不到一个月电视坏了怎么办 交保险后保险公司不给开收据怎么办 收据白联作废红联丢失怎么办 收据作废客户联给客户了怎么办 宜家买的床和床垫搬家了怎么办 科龙空调开机后自己关机怎么办 以旧换新旧的没给商家 报案怎么办 想换新手机但是旧的没坏怎么办 从苏宁易购买的电视坏了怎么办 苏宁易购服务站买的电视坏了怎么办 用微信登陆京东账号退不出来怎么办 微信账号密码手机号都忘记了怎么办 我的手机号京东被别人绑定了怎么办 京东之前绑定的手机号不用了怎么办 京东退货钱未到银行卡账号里怎么办 京东身份证绑的手机号不用了怎么办 海尔冰箱要退货箱子扔了怎么办 海尔冰箱门变形关不严没吸力怎么办 长时间不用的手机忘记密码怎么办啊 微信忘记密码手机号又不用了怎么办