Apache Log4j使用实例 
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 
Blog: 
1.Logger类
通过Logger类的静态方法Logger.getRootLogger得到RootLogger。所有其他的loggers是通过静态方法Logger.getLogger来实例化并获取的。这个方法Logger.getLogger把所想要的logger的名字作为参数。 Logger类的一些其它基本方法在下面列出:
package org.apache.log4j;
public class Logger {
  // Creation and retrieval methods:
  public static Logger getRootLogger();
  public static Logger getLogger(String name);
 
  // printing methods:
  public void debug(Object message);
  public void info(Object message);
  public void warn(Object message);
  public void error(Object message);
  public void fatal(Object message);
 
  // generic printing method:
  public void log(Level l, Object message);
}
2. getLogger方法
以一样的参数名字调用getLogger方法,返回的reference总是指向完全相同的logger对象。例如,在这里:
Logger x = Logger.getLogger("wombat");
Logger y = Logger.getLogger("wombat");
x和y指向完全相同的logger对象。
3.Log4j使用流程
1)根据配置文件初始化log4j
       log4j可以使用3种配置器来初始化:
BasicConfigurator,DOMConfigurator,PropertyConfigurator。
这里用的是PropertyConfigurator。使用PropertyConfigurator适用于所有的系统。如下的语句。
PropertyConfigurator.configure("log4j.properties");
就以log4j.properties为配置文件初始化好了log4j环境。对于一般的java project 可以不使用上面的语句初始化log4j,log4j会自动在classpath下,找到配置文件并初始化。如果log4j不能自动初始化配置文件,那么就需要用上面的方法进行初始化。
       注意:初始化配置文件,最好只在系统启动的时候执行一次,如果执行多次,一是浪费资源,二就是对于老版本的log4j,使用DailyRollingFileAppender时,可能会出现问题。
 
2)导入org.apache.log4j.Logger;及相关包。
 
3)在需要使用log4j的地方获取Log实例。
private static Logger log = Logger.getLogger("MyCLASS.class");
 
4)使用Logger对象的debug,info,fatal...方法。
log.debug("it is the debug info");
4.Log4j使用示例
Test.java
import org.apache.log4j.Logger;
 
public class Test {
    static Logger log= Logger.getLogger(Test.class);
    public void log(){
       log.debug("Debug info.");
       log.info("Info info");
       log.warn("Warn info");
       log.error("Error info");
       log.fatal("Fatal info");
    }
    public static void main(String[] args) {
       Test test = new Test();
       test.log();
    }
}
 
Log4j.properties(具体配置属性定义见《Log4j配置说明》)
log4j.rootLogger=info, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
 
结果
INFO [main] (Test.java:16) - Info info
WARN [main] (Test.java:17) - Warn info
ERROR [main] (Test.java:18) - Error info
FATAL [main] (Test.java:19) - Fatal info
 
分析:
Test.java
“Logger.getLogger(Test.class);”这里的“Test.class”事实上传进去的是Test这个类的完整路径(包名+类名),“test.Test”。这样如果存在“test”这个Log那么Test这个Log就继承它,否则就继承rootLogger。
Log4j.properties
第一行,配置log4j.rootLogger。应为它是根,必须配置,否则别的Log无法继承。其他的Log可以配置也可以不配置。等号后面的第一个参数表示日志级别,可以填五个级别中的一种(Log4j默认把日志信息分为五个等级debug < info < warn < error < fatal),后面的参数都是让Log知道输出到哪里,如果你想让日志输出到两个地方就加两个输出参数,比如:
log4j.rootLogger=info, stdout
这里的info表示,该Log的日志级别为info,所有级别小于info的日志都不会被记录。比如使用这个配置文件的话,我刚开始举的那个类中:
log.debug("Debug info.");
这句话是不起作用的,因为debug的级别小于info。这样就很容易控制什么信息在调试的时候要显示,什么信息在发布的时候要去掉。这些都不用改代码。
      配置stdout,这个名字是随便取的,你可以叫它A:
log4j.appender.A=org.apache.log4j.ConsoleAppender
那么上面的rootLogger的参数stdout也要改成A,其他用到的地方当然也要改。这里的关键不是名字,而是appender类型,比如这里的“ConsoleAppender”,指输出到Console。后面两行都是设置日志格式的。
5.Apache Log介绍集
[1] Apache Log4j配置说明
[2] Apache Log4j使用实例
[3] Apache Commons-logging使用实例
[4] 如何自建appender扩展Log4j框架
6.参考资料
[1] Log4j官方手册
[2] Log4j最简入门

Apache Log4j使用实例相关推荐

  1. org.apache.log4j.Logger详解

    1. 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开 ...

  2. Apache Commons-logging使用实例

    1.Commons-Loggin简介 Jakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具.它提供 ...

  3. java logger 格式_org.apache.log4j.Logger详解

    1.概述 1.1.背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开发环 ...

  4. Apache Log4j任意代码执行漏洞安全风险通告第三次更新

    奇安信CERT 致力于第一时间为企业级用户提供安全风险通告和有效解决方案. 风险通告 近日,奇安信CERT监测到Apache Log4j存在任意代码执行漏洞.经过分析,该组件存在Java JNDI注入 ...

  5. log4j:WARN No such property [datePattern] in org.apache.log4j.RollingFileAppender.

    log4j:WARN No such property [datePattern] in org.apache.log4j.RollingFileAppender. log4j:ERROR setFi ...

  6. IDEA里运行代码时出现Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger的解决办法(图文详解)...

    问题详情 运行出现log4j的问题 "C:\Program Files\Java\jdk1.8.0_66\bin\java" -Didea.launcher.port=7533 & ...

  7. Apache Log4j 学习笔记

    Apache Logging Project Homepage: http://logging.apache.org Log4j的类图 Logger - 日志写出器,供程序员输出日志信息 Append ...

  8. Log4j MDC Tomcat下报异常org.apache.log4j.helpers.ThreadLocalMap

    严重: The web application [/qdgswx] created a ThreadLocal with key of type [org.apache.log4j.helpers.T ...

  9. 如何看待 Apache Log4j 2 远程代码执行漏洞?

    Apache Log4j2 是一款优秀的 Java 日志框架,大量的业务框架都使用了该组件. 2021 年 11 月 24 日,阿里云安全团队向 Apache 官方报告了 Apache Log4j2 ...

最新文章

  1. 实战:基于tensorflow 的中文语音识别模型 | CSDN博文精选
  2. python turtle 画风轮
  3. python 取array并集_Python内置数据结构原理与性能简易分析
  4. 鸿蒙系统太烂,一加终于觉醒!变相承认系统太烂,魅族的吐槽一针见血
  5. java简单功能测试,java 自动化测试小功能集锦
  6. mysql有符号数_mysql里面有符号整数类型有关问题,请指点,多谢
  7. 消息中间件学习总结(4)——RocketMQ之RocketMQ 迈入50万TPS消息俱乐部
  8. 如何使用计算机?【快速上手】带你了解计算机!
  9. vue实现在线客服功能(附完整代码)
  10. java身份证实名认证-身份证二要素实名认证-身份证实名校验-身份证一致性实名认证
  11. windows镜像文件官方下载地址
  12. 向量空间模型 - 维基百科,自由的百科全书
  13. (十六)《汇编语言(王爽)》 | 实验 10:编写子程序
  14. 【JS】json导出到excel,自定义文件名和后缀名
  15. 【Note】二十四节气英文表达(solar term)
  16. MindMapper中如何添加父主题
  17. PCB布局布线中地的设计
  18. linux查看端口被哪个程序占用
  19. 程序员要怎样学习英语?
  20. Linux下hosts文件详解

热门文章

  1. linux系统top命令:virt,res,shr详解
  2. Youtube 视频下载
  3. 钳工常识与钳工技能实训教学
  4. 区块链去中心化有什么优势?
  5. ABP应用——修改EF Core
  6. 算法笔记 : 透视变换(透射变换)
  7. WordPress建站主机推荐
  8. mac c语言运行程序,Mac运行C语言
  9. 基于SSM的大学生创业众筹平台网站 毕业设计-附源码212000
  10. 谷歌浏览器播放器声音