一、背景前沿
项目中经常性的会遇到有日志输出的情况,例如:system.out,或者是用于调试,或者用于记录系统的运行状态。存在这么一种需求,首先,希望日志的输出地除了控制台consol,还希望能够直接写入到文件中,以及可以自动的管理日志文件的大小;同时,还可以设置当前日志的严重级别,并根据严重级别控制输出的类别;最后一点,就是性能的考虑,要做到日志的输出不能够影响系统的总体性能。Log4j便能满足这么一种需求,它是开源的用于日志输出的组件,用于替代传统的system.out等日志输出。
二、log4j概述
1、Log4j的官网地址:http://logging.apache.org
2、Log4j类图:
简单介绍类图结构:
Logger,日志写出器,程序员使用的最直接的类,用于日志输出。
Appender,日志目的地,用于控制日志的输出地,例如:consoleappender输出到控制台,fileappernder输出到文件中。
Layout:日志格式器,用于控制输出日志的格式,样式等。
至于各个类提供的具体方法,可以参考附件中的log4japi文档,或者参考同目录下的log4j学习笔记。
三、log4j使用说明
1、 到官网下载log4jxxx.jar,并放到项目中的lib下。
2、 添加配置文件(log4j.properties,或者log4j.xml),可以从jar包将例子配置文件复制出来,再根据实际需要修改。
3、 在需要添加日志输出的类中,追加logger定义,在相应的方法中添加合适级别的输出。
4、 请看下面一段示例代码:
public class Log4jTest {
public static void main(String argv[]) {
// Create a logger by the name of class Log4jTest.
Logger logger = Logger.getLogger(Log4jTest.class);
// Use the default configuration.
BasicConfigurator.configure();
// Set the logger level to Level.INFO
logger.setLevel(Level.INFO);
// This request will be disabled since Level.DEBUG < Level.INFO.
logger.debug("This is debug.");
// These requests will be enabled.
logger.info("This is an info.");
logger.warn("This is a warning.");
logger.error("This is an error.");
logger.fatal("This is a fatal error.");
return;
}
}
5、项目中log4j对象之间的层次关系
如上所述,log4j用于项目中的日志输出;在需要的时候,在指定的类中定义logger对象,然后在需要日志输出的地方调用logger.debug/info/error/…(“日志内容”),即可。即,需要为不同的类定义各自的logger对象,项目中的类在packe级别存在层次关系,那么同样的logger对象也存在着层次关系,例如:x.y是x.y.z的上一层父亲。
首先,每个项目中都有一个且唯一的一个root logger(根logger对象),所有的logger类都继承该根logger,所谓继承指的是继承root的配置项。定义log4j.properties以及log4j.xml,就是对root logger进行的配置。
其次,可以通过方法setAdditivity()设置每个logger是否继承父亲的配置。默认情况下,是true,继承父亲配置。下面各个子logger也可以根据自己的需要,通过编程的方式(调用logger的API)实现配置。
最后,logger对象之间虽然存在着父子关系,但是对其创建顺序没有影响。可以先创建子logger,再创建父logger,log4j会自动的维护关系树。
四、log4j具体配置文件,配置项说明
1、配置文件简述
Log4j有两个配置文件,一个是log4j.properties,一个是log4j.xml,两个配置文件都是用于配置根logger对象的(root logger)。两个配置文件只是格式不一样,但是配置的内容都是一样的,包含3个配置:logger级别(level),logger的输出目的地(appender),logger的输出样式(layout)。
其中,由于log4j的记载过程,决定了log4j.xml优先级要高于log4j. properties配置文件。下面将简述其加载初始化过程。
如果用户在static初始化块,显示编程方式加载了用户自定义的配置文件(可以是任意名字的.properties,也可以是任意名字的.xml)文件,XXXConfigurator.configure(配置文件名字),那么将加载用户指定的该配置文件。
如果上述加载成功,则不会再去读取系统其他配置文件。如果上述加载失败,则会先在类路径下寻找log4j.xml文件,加载处理。
如果上述加载成功,则不会再去读取系统的其他配置文件。如果上述加载失败,则会在类路径下寻找log4j.properties文件,加载处理。
2、配置API说明
root logger的配置可以通过上述配置文件的方式实现。
Root logger,普通级别logger配置,也可以通过调用API方式实现,下面贴出一个简单的例子:
public class testlog4jdft {
public static void main(String[] args) {
//创建一个logger日志写出器对象
Logger logger = Logger.getLogger(testlog4jdft. class );
//启用默认配置
// BasicConfigurator.configure();
// DOMConfigurator.conf
// PropertyConfigurator.configure(configFilename)
//设置日志级别
// logger.setLevel(Level.TRACE);
//为logger设置appender:日志目的地
// ConsoleAppender ca=new ConsoleAppender(new PatternLayout());
// logger.addAppender(ca);
//以不同的级别输出
logger.debug( "ququ---- debug " );
logger.trace("ququ----trace");
System.out.println("--------------------");
logger.error( " ququ----error " );
logger.fatal("ququ-----fatal");
logger.warn("ququ------warning");
logger.info("ququ=========info");
}
}
以上说明,logger的配置既可以通过配置文件方式,也可以通过编程的方式实现。
同时,如果采用配置文件方式,配置文件的加载,如果显示指定了配置文件名称,那加载所指定的;否则,默认优先加载xml。即:用户显示指定>log4j.xml>log4j.properties。
3、配置项说明
可以参考同目录下的,log4j配置详解,或者log4j学习笔记。
五、编程习惯常见用法
Ø 让每个类都拥有一个private static的Logger对象,用来输出该类中的全部日志信息
Ø 使用xml文件来完成对log4j环境的配置。在项目的main class中的静态初始化块里放log4j环境的配置代码。用XXXConfigurator.configure(配置文件名字)方法加载用户指定的配置文件。注意:在一个项目中,log4j环境只需要被配置一次,而不是在每个使用了logger的类里都需要调用一次 。子logger通常继承root的配置。
Ø 用MyClass.class作为参数创建该类的静态Logger对象
- 大小: 18.3 KB
分享到:
相关推荐
log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记log4j学习笔记
Log4j 学习笔记. 1. Log4j的类图 2. Logger:日志写出器 1. Logger的输出方法 2. Logger的命名规则 3. Log level 4. 示例代码 5. 关于logger的两点说明 3. Appender:日志目的地 1. ConsoleAppender 2. ...
log4j源码例子,可供大家学习log4j,简单实用易学,eclipse环境,哈哈。
Log4j学习笔记和一套完整定义实例 精辟
Log4j2学习笔记,引入log4j2的依赖-log4j2.xml配置模板-application.properties文件配置-使用
Log4j 学习笔记
快速学习java日志文件jar包:log4j学习文档
log4j 学习笔记 自己整理出来的 网上写的很杂乱。其实在java企业级中开发 我们更重视的是如何做日志记录。本笔记快速入门使用 log4j 节省了企业开发的学习成本
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是...
log4j学习笔记.
Log4J学习笔记 1、配置文件 2、数据库 3、封装
log4j学习笔记及写入数据库配置,一份log4j学习资料。还包含log4j写入数据库的配置方法。
分别有disruptor-3.3.4.jar(Log4j2异步日志的底层实现)、log4j-api-2.19.0.jar(log4j门面)、log4j-core-2.19.0.jar(log4j实现)、log4j-slf4j-impl-2.19.0.jar(SLF4J与Log4j绑定)、slf4j-api-1.7.30.jar(SLF...
log4j详解.doc log4j使用说明.doc log4jAPI.chm log4j配置.txt 深入学习log4j.PDF
log4j学习资料 java日志必用,入门必须的
*Log4j 学习笔记,自己的一点学习经验