Apache Log4j使用实例-阿里云开发者社区

开发者社区> 科技小先锋> 正文

Apache Log4j使用实例

简介:
+关注继续查看
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");
xy指向完全相同的logger对象。
3.Log4j使用流程

1)根据配置文件初始化log4j
       log4j可以使用3种配置器来初始化:
BasicConfigurator,DOMConfigurator,PropertyConfigurator
这里用的是PropertyConfigurator。使用PropertyConfigurator适用于所有的系统。如下的语句。
PropertyConfigurator.configure("log4j.properties");

就以log4j.properties为配置文件初始化好了log4j环境。对于一般的java project 可以不使用上面的语句初始化log4jlog4j会自动在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。后面两行都是设置日志格式的。


本文转自zhangjunhd51CTO博客,原文链接:http://blog.51cto.com/zhangjunhd/21211,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《ANSYS Workbench有限元分析实例详解(静力学)》——导读
CAE是计算机辅助求解复杂工程和产品结构各项性能和优化设计等问题的一种近似数值分析方法,适用于工程的整个生命周期。ANSYS软件是最经典的CAE软件之一,在国内应用广泛。近些年ANSYS公司收购了多款顶级流体、电磁类软件,并重点发展ANSYS Workbench平台。
10578 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
8417 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12043 0
http协议使用实例
#include #include #include #define MAXSIZE 1024#pragma comment(lib, "Wininet.lib") void urlopen(TCHAR*); int main(int argc, TCHAR* argv[]){ TCHAR ch[] = TEXT("http://dt.
642 0
Asp.net MVC 2.0 + Unity 2.0(IoC) + EF4.0 实例:RoRoWoBlog 开源项目框架代码
本开源项目当前使用框架如下: 前台表现:Asp.net MVC 2 数据持久层:ADO.Net Entity Framework 4.0 依赖注入容器:Unity 2.0 开发工具:VS2010   开源项目地址:http://rorowo.
950 0
fbh
最详细的Log4j使用教程
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。
739 0
十大行业经典案例!Apache Flink 的 40 个最佳实践
如今,Apache Flink 行业应用几何?在降本增效的需求驱动下,企业如何实现数据与算力价值最大化?本文整理了 Flink 社区近一年的社区案例,并按照行业进行分类,供大家参考!
6850 0
6967
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载