• Java 标准日志工具 Log4j 的使用(附源代码)


     源代码下载

            Log4j 是事实上的 Java 标准日志工具。会不会用 Log4j 在一定程度上可以说是衡量一个开发人员是否是一位合格的 Java 程序员的标准。如果你是一名 Java 程序员,如果你还不会用 Log4j,那你真的很有必要读一下这篇文章了。很多朋友反映想写程序日志,但是却不知道怎么把日志写到日志文件里,而且 Java 这方面的资料似乎不多。如《如何写log4j.xml日志配置文件》 所述。本文详细介绍了如何在项目中使用 Log4j 的步骤,并附加了一个例子性质的代码。
            Why Log4j? 
            有的朋友喜欢用 System.out.println(String msg); 语句来调试代码。这个确实是一个很好的调试工具。但是随着项目的结束,或者问题的解决,这些语句需要我们一个个地揪出来手工删除?《如何一次性删除所有的system.out.println语句 》,这个帖子里的这位网友就遇到了这样一个问题。
            全部都删除干净,问题又来了:如果以后又出现问题了该怎么办呢?难道再次添加,问题解决后再次查找到删除?
            使用 Log4j 就可以很好地解决上面的问题和矛盾。Log4j 有一个日志级别,用来控制是否进行日志记录。其由低到高的级别如下:
    ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF 
            将日志进行分级的目的就是在于可以灵活配置。比如说如果日志级别限定于 DEBUG,那么包括 DEBUG 在内的,INFO、WARN、ERROR、FATAL、OFF 都会进行日志记录;而如果级别定义为 INFO,那么 INFO 以下的级别,像 DEBUG 的日志就不会记录。比如如下代码:

    [java] view plain copy
     
     print?
    1. Logger log = LogManager.getLogger(HelloWorld.class);  
    2. log.info("info通过 class 对象来获取 logger 对象");  
    3. log.debug("debug通过 class 对象来获取 logger 对象");  
    4. log.warn("warn通过 class 对象来获取 logger 对象");  

            如果你的 Log4j 定义为输出到控制台,日志级别定义为 INFO,那么执行到上面语句块,控制台会输出以下日志信息:
    18:07:37,237 INFOHelloWorld:32 - info通过 class 对象来获取 logger 对象
    18:07:37,245 WARNHelloWorld:34 - warn通过 class 对象来获取 logger 对象 
            具体范例作者已经上传至附件,有兴趣的朋友可以去下载下来看看。限于时间,例子里仅仅演示了如何将日志信息输出到控制台上。当然,日志也可以输出到文件、数据库中。作者认为,如果弄清楚了示例代码,对于其他实现聪明的读者完全可以参考 Log4j 的 API 自己搞定。
            How to Log4j? 
            第一步:下载 Log4j 工具包 。
            官方网站地址:http://logging.apache.org/log4j/1.2/index.html。进入后左侧菜单栏里 Documentation 下的 JavaDoc 就是 Log4j 的在线 API 文档。我们点击 Get log4j 1.2 下 的 Download 进入下载页面,最新版本是 1.2.15,点击 apache-log4j-1.2.15.zip 进行下载该文件,解压缩后得到 Log4j 的源代码、示例代码、安装说明和 Log4j 的 jar 包(log4j-1.2.15.jar)。
            第二步:项目中导入 log4j 的 jar 包 。
            作者开发 IDE 是 eclipse,右击项目名 -> Build Path -> Configure Build Path -> Add External JARS -> 找到你解压缩得到的 log4j-1.2.15.jar 并选中。确定。
            第三步:编辑 log4j.properties 文件,配置你的 Log4j 。
            在项目的 src 目录下,新建 log4j.properties 文件。通过这个接口对 Log4j 进行配置。
            示例代码中作者的 log4j.properties 配置如下:
    [java] view plain copy
     
     print?
    1. ### logger 的配置 ###  
    2. #配置根 logger  
    3. log4j.rootLogger=INFO,stdout  
    4. ### direct log messages to stdout ###(标准的终端输出)  
    5. #控制台输出  
    6. log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
    7. #自定义输出布局  
    8. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
    9. #输出的格式  
    10. log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p%c{1}:%L - %m%n  

            说明:
            “log4j.rootLogger=INFO,stdout”句:定义根 logger 配置项。其语法为:级别,输入终端1,输出终端2,……。stdout 代表日志输出到控制台。
            “log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p%c{1}:%L - %m%n”语句定义打印格式。打印参数如下:
    %m:输出代码中指定的消息。
    %p:输出优先级。
    %r:输入自应用启动到输出该log信息耗费的毫秒数。
    %c:输出所属的类目,通常就是所在类的全名。
    %t:输出产生该日志线程的线程名。
    %n:输出一个回车换行符。Windows平台为“/r/n”,UNIX为“/n”。
    %d:输出日志时间点的日期或时间,默认格式为ISO8601,推荐使用“%d{ABSOLUTE}”,这个输出格式形如:“2007-05-07 18:23:23,500”,符合中国人习惯。
    %l:输出日志事件发生的位置,包括类名、线程名,以及所在代码的行数。 
            第四步:代码中需要日志记录的地方进行日志代码 。
            通过 Logger log = LogManager.getLogger(你要进行日志的代码所在的类.class);获取 logger 对象,然后调用其 info、debug 等方法进行日志输出。示例代码如下:
    [java] view plain copy
     
     print?
    1. /** 
    2.  * 文件名:HelloWorld.java 
    3.  * 
    4.  * 版本信息: 
    5.  * 日期:2010-1-18 
    6.  * Copyright XXX Corporation 2010 
    7.  * 版权所有 
    8.  * 
    9.  */  
    10. package com.defonds.log4j;  
    11. import org.apache.log4j.LogManager;  
    12. import org.apache.log4j.Logger;  
    13. /** 
    14.  * 
    15.  * 项目名称:TestLog4j 
    16.  * 类名称:HelloWorld 
    17.  * 类描述:Log4j 测试类 
    18.  * 创建人:Defonds 
    19.  * 创建时间:2010-1-18 下午02:58:18 
    20.  * 修改人:Defonds 
    21.  * 修改时间:2010-1-18 下午02:58:18 
    22.  * 修改备注: 
    23.  * @version 
    24.  * 
    25.  */  
    26. public class HelloWorld {  
    27.     public static void main(String[] args) {  
    28.         Logger log = LogManager.getLogger(HelloWorld.class);  
    29.         log.info("info通过 class 对象来获取 logger 对象");  
    30.         log.debug("debug通过 class 对象来获取 logger 对象");  
    31.         log.warn("warn通过 class 对象来获取 logger 对象");  
    32.     }  
    33. }  

            再次说明:本示例只是让没有用过 Log4j 的朋友进行入门级的认识,Log4j 强大的日志记录功能不仅与此。更多 Log4j 的日志功能,还需要读者在项目中自己去切身体会认识。
     
     
  • 相关阅读:
    Java异常的优势与缺陷,及其处理原则
    Kettle 4.2源码分析第四讲--KettleJob机制与Database插件简介(含讲解PPT)
    Kettle 4.2源码分析第三讲--Kettle 转换机制transformation介绍
    Kettle 4.2源码分析第二讲--Kettle插件结构体系简介
    Kettle 4.2源码分析第一讲--Kettle 简介
    pytorch one hot 的转换
    SQLSERVER类似于lastindexof的语句
    自定义省市选择器 微信小程序多列选择器
    王者荣耀伽罗壁纸
    微信小程序实现淡入淡出效果(页面跳转)
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/5358973.html
Copyright © 2020-2023  润新知