博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache Log4j使用实例
阅读量:7113 次
发布时间:2019-06-28

本文共 3182 字,大约阅读时间需要 10 分钟。

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
。后面两行都是设置日志格式的。
本文转自zhangjunhd51CTO博客,原文链接:http://blog.51cto.com/zhangjunhd/21211,如需转载请自行联系原作者
你可能感兴趣的文章
union
查看>>
banner 跟随鼠标呈现视差效果
查看>>
linux给用户添加sudo权限
查看>>
前端基础(6)easyUI
查看>>
我有我的方向
查看>>
HBase常用Shell命令
查看>>
vim的个性化配置- 再谈vim的折叠和展开 -- 彻底掌握vim 的展开和折叠!
查看>>
Pytorch-nn.Module-modules()
查看>>
Linux 常用命令
查看>>
Redis命令
查看>>
c#之虚函数
查看>>
Mac安装Brew
查看>>
Flask-WTF表单
查看>>
vs2017常用快捷键
查看>>
使用ffmpeg将GoPro长延时的jpg照片转换成视频文件(一条命令)
查看>>
MyBatis
查看>>
Cookie禁用了,Session还能用吗?
查看>>
c#构造函数
查看>>
git push 403
查看>>
Proximal Algorithms 7 Examples and Applications
查看>>