Log4j笔记 第一章 简单用上Log4j

转自:http://mwhgjava.iteye.com/blog/852006


第一节 概述
Log4j诞生,为减轻对成千上万的
Java代码   收藏代码
  1. System.out.println();  
  2. System.err.println();  
  3. e.printStackTrace();  

(e为Throwable,包括Exception和Error)
语句的维护成本。

Log4j能够做更多的事。

通过仅修改配置文件,而不修改程序代码,控制日志记录语句是否记录日志,控制系统资源消耗。

本手册代码演示在eclipse中编辑。

第二节 简单使用Logger类
选一个新的workspace, 创建一个新的项目。
导入org.apache.log4j,编写一个示例类,用上Logger类的日志记录方法。
LoggerSnippet.java
Java代码   收藏代码
  1. package org.smiledsun.snippets.logger;  
  2.   
  3. import org.apache.log4j.Logger;  
  4.   
  5. public class LoggerSnippet {  
  6.   
  7.     /** 
  8.      * 使用工厂方法获得Logger,  
  9.      * Logger不通过new 创建出来的 
  10.      */  
  11.     private static final Logger logger = Logger.getLogger(LoggerSnippet.class);  
  12.   
  13.     public static void main(String[] args) {  
  14.     log.trace("This is a trace message.");  
  15.     log.debug("This is a debug message.");  
  16.     log.info("This is a info message.");  
  17.     log.warn("This is a warn message.");  
  18.     log.error("This is an error message.");  
  19.     log.fatal("This is a fatal message.");  
  20.     }  
  21. }  

说明:
1、使用时,Logger是通过工厂方法获得的。不通过new 创建出来的。(思考,为什么要通过工厂方法)
2、获得Logger的工厂方法的参数,一般为调用类的class。工厂方法使用类的类名,标示这个Logger。(思考,为什么要传入这个参数,可以传入其他吗)
3、Logger默认的日志级别分6级,trace、debug、info、warn、error、fatal。(log4j_1.2.12新添了trace在debug之下,之前为5个等级)。

第三节 简单配置log4j,让log4j工作
执行上面的类,控制台显示如下信息。
log4j:WARN No appenders could be found for logger (org.smiledsun.snippets.logger.LoggerSnippet).
log4j:WARN Please initialize the log4j system properly.

原因:没有加载log4j配置文件。
解决方法,在任意位置,编写如下内容的log4j.xml文件(文件名自定)。
Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">   
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" >    
  4.     <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">    
  5.         <layout class="org.apache.log4j.PatternLayout"/>    
  6.     </appender>    
  7.     <root >   
  8.         <appender-ref ref="CONSOLE"/>    
  9.     </root>  
  10. </log4j:configuration>  
 
再在执行你的应用程序时,配置虚拟机参数log4j.configuration为你的log4j.xml文件的URL路径。

场景1:在命令行中执行程序,配置log4j配置文件。
java -Dlog4j.configuration=File:D:\log4j.xml LoggerSnippet

场景2:在Eclipse中执行程序,配置log4j配置文件。
点击主菜单的“Run”->“Run Configurations”弹出“Run configurations”对话框,在左边选中刚刚运行过的“LoggerSnippet”,在右边找到“Arguments”中的“VM arguments:”输入“-Dlog4j.configuration=File:D:\log4j.xml”如附件log4j_run_configurations_vm_arguments.png

场景3:在导出后的eclipse RCP应用程序中,配置log4j配置文件。
打开在eclipse.exe同目录下的eclipse.ini文件(没有则新建一个),添加一行内容
“-Dlog4j.configuration=File:D:\log4j.xml”

补充知识:
1、通过命名行执行java程序的格式如下:java 虚拟机参数 类名 程序参数。
2、-D是java设置系统属性的专有前缀。
   可以通过System.getProperty(String key)获得。
3、File是文件协议类型的URL前缀。URL除了http协议类型,还有其他类型。
4、这里的D:log4j.xml可以是绝对URL路径,也可以是相对URL路径。

5、如果你只是在eclipse中执行你的应用程序,则可以在src目录下创建一个名为log4j.xml的文件。就不需要这些配置。
6、为什么是这样?想了解详细信息。
请阅读log4j源码,org.apache.log4j.LogManager.java文件。

再执行上面的类。控制台打印如下结果。
DEBUG - This is a debug message
INFO - This is an info message
WARN - This is a warn message
ERROR - This is an error message
FATAL - This is a fatal message

(注意:没有打印:"This is a trace message.",为什么呢?)
好了。我们的Log4j开始工作了。

第四节 Logger记录日志的方法
Java代码   收藏代码
  1. public void trace(Object message)  
  2.     记录消息message,级别为trace  
  3. public void trace(Object message, Throwable t)  
  4. 记录消息message和异常/错误堆栈信息t,级别为trace  
  5.   
  6. public void debug(Object message)  
  7.     记录消息message,级别为debug  
  8. public void debug(Object message, Throwable t)  
  9. 记录消息message和异常/错误堆栈信息t,级别为debug  
  10.   
  11. public void info(Object message)  
  12.     记录消息message,级别为info  
  13. public void info(Object message, Throwable t)  
  14. 记录消息message和异常/错误堆栈信息t,级别为info  
  15.   
  16. public void warn(Object message)  
  17.     记录消息message,级别为warn  
  18. public void warn(Object message, Throwable t)  
  19. 记录消息message和异常/错误堆栈信息t,级别为warn  
  20.   
  21. public void error(Object message)  
  22.     记录消息message,级别为error  
  23. public void error(Object message, Throwable t)  
  24. 记录消息message和异常/错误堆栈信息t,级别为error  
  25.   
  26. public void fatal(Object message)  
  27.     记录消息message,级别为fatal  
  28. public void fatal(Object message, Throwable t)  
  29. 记录消息message和异常/错误堆栈信息t,级别为fatal  
  30.   
  31. public void assertLog(boolean assertion, String msg)     
  32.     如果assertion为false,记录消息msg,级别为error  



第五节 配置文件
Log4j配置文件可以是.xml或.properties文件。老的版本只支持.properties。推介使用.xml文件,因为.xml文件结构更清晰、可读性更高,新版本的部分特性.properties文件已经不能配置或难配置了。

log4j默认从系统属性中的log4j.configuration获取log4j配置文件的url,找不到就从classpath中找 log4j.xml文件为配置文件,找不到就从classpath中找 log4j.properties配置文件。如果找不到,就打印上面的出错信息。详情见log4j源码,org.apache.log4j.LogManager.java文件。

详情参考本人日志: Log4j笔记 第一章 简单用上Log4j

可以通过编程的方法加载外部配置文件:使用
org.apache.log4j.PropertyConfigurator类的configure()方法。支持文件路径名,URL,Properties等多种形式。

在找不到配置文件时,也可以Logger.getRootLogger().setLevel(Level.OFF);关闭日志。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值