Log4j使用浅析
来源:互联网 发布:两个区域写入一个数组 编辑:程序博客网 时间:2024/06/06 07:52
前些天方兴同学让我看看log4j,本来觉得也是个蛮好玩儿的东西,一直要看的,所以借朋友的东风我就琢磨了一下了。现在将看后的一些东西写出来,权当是笔记了。
测试程序Test.java
package test;
import org.apache.log4j.*;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
PropertyConfigurator.configure("test.properties");
Logger logger = Logger.getLogger("myLogger");
logger.debug("Hello, log");
logger.info("Hello again...");
}
}
配置文件test.properties
##配置logger组件##
#配置logger的超类rootlogger
log4j.rootLogger=INFO,file
#定义logger组件
log4j.logger.myLogger=debug,console
##appender##
#在控制台输出结果
log4j.appender.console=org.apache.log4j.ConsoleAppender
#配置日志输出目的地
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=log.html
##layout##
#配置控制台上的显示形式
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
#配置在文件中的显示开式
log4j.appender.file.layout=org.apache.log4j.HTMLLayout
对于这样一个程序,我们可以看到第一句
PropertyConfigurator.configure("test.properties");
PropertyConfigurator类通过configure方法初始化loggerManager类,这样属性文件中配置的logger现在可以成为一个个的实体,能够被调用。这里的实现使用的是工厂方法,这种方法在spring以及其它的开源框架中都有使用到。这个时候我们可以同调用loggerManager的getlogger(String name)的方法得到一个特定配置的logger对象。当然也可以使用程序中使用的方法Logger.getLogger("myLogger");我们知道myLogger已经在属性文件中配置了,因此现在只是从刚才的Manager那里得到该对象而已,这样就避免了logger对象的重复构建。在LoggerManager的背后还有一个LoggerRepository类,它才是储存这些logger对象的地方,这一点大家可以在log4j的源代码中自己摸索到。
下面我们来看看属性文件
log4j.rootLogger=INFO,file
这样配置了程序的根logger。如果我们不显示的申明调用哪个logger,程序将使用这个默认的logger。它有两个参数INFO,File,INFO是我们需要记录的日志级别,在log4j中有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是FATAL 、ERROR、WARN、INFO、DEBUG。当我们选择了INFO以后INFO和其上的所有级别的日志信息将被记录下来。即Error、WARN、INFO将被记录下来。记录它的对象是File。File对象是记录日志的载体。
#配置日志输出目的地
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=log.html
#配置在文件中的显示开式
log4j.appender.file.layout=org.apache.log4j.HTMLLayout
这样我们就可以知道根logger将使用FileAppender,即日志将被写入文件中,在这里是写入log.html文件中。同时文件的显示方式为HTMLLayout方式。
Log4j中提供的appender有:
org.apache.log4j.ConsoleAppender(控制台);
org.apache.log4j.FileAppender(文件);
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件);
org.apache.log4j.RollingFileAppender(文件大小到指定尺寸产生一个新的文件);
org.apache.log4j.WriteAppender(将日志信息以流格式发送到任意指定地方);
最后我们来看看这句
Logger logger = Logger.getLogger("myLogger");
当我们调用这句话时程序做了些什么??它将使用LoggerManager在LoggerRepository中寻找是否有一个名称为myLogger的logger,如果有,则将它的引用返回;否则以根logger为模板创建一个新的logger对象。
在我们这个程序中已经实例化了一个myLogger对象,大家知道在什么地方吗?
#定义logger组件
log4j.logger.myLogger=debug,console
对了,就是这句话,我们定义了一个新的logger以备不时之需,它的日志记录级别设置为debug,它将日志全部输出到终端。剩下的与配置根logger一样。在此不再冗述。
- Log4j使用浅析
- 浅析Log4j 日志记录工具的使用
- log4j 实例 , 浅析
- log4j之个人浅析
- Log4j源码浅析
- 【Log4j】Log4j使用总结
- Log4j使用
- Log4j使用
- 使用log4j
- log4j使用
- LOG4J使用
- 使用 log4j
- log4j 使用
- log4j使用
- Log4J使用
- Log4j使用
- 使用log4j
- Log4j 使用
- 改良版本mysqldump来备份MYSQL数据库
- 利用SELECT ... OUTFILE来备份MySQL数据库
- ubuntu下realplayer画面有点卡
- Windows运行命令集锦
- load data infile 需要注意的一些地方
- Log4j使用浅析
- Java中的Set List Map 的各自特点
- 关于Apache的性能优化
- java集成apache 动态配置域名
- 显示Div提示框
- ORACLE 本地读写文件---ORA WRITE WEBSHELL
- oracle 安全牛逼站点
- 初写博客——乱叨叨
- AIX5.3 weblogic9.2速度很慢问题的解决过程