log4j和slf4j日志框架入门
- 格式:pdf
- 大小:314.48 KB
- 文档页数:24
Java标准日志工具Log4j的使用1(入门)Log4j 是事实上的 Java 标准日志工具。
会不会用 Log4j 在一定程度上可以说是衡量一个开发人员是否是一位合格的 Java 程序员的标准。
如果你是一名 Java 程序员,如果你还不会用 Log4j,那你真的很有必要读一下这篇文章了。
很多朋友反映想写程序日志,但是却不知道怎么把日志写到日志文件里,而且 Java 这方面的资料似乎不多。
如《如何写log4j.xml日志配置文件》所述。
本文详细介绍了如何在项目中使用 Log4j 的步骤,并附加了一个例子性质的代码。
Why Log4j?有的朋友喜欢用System.out.println(String msg); 语句来调试代码。
这个确实是一个很好的调试工具。
但是随着项目的结束,或者问题的解决,这些语句需要我们一个个地揪出来手工删除?《如何一次性删除所有的system.out.println语句》,这个帖子里的这位网友就遇到了这样一个问题。
全部都删除干净,问题又来了:如果以后又出现问题了该怎么办呢?难道再次添加,问题解决后再次查找到删除?使用Log4j 就可以很好地解决上面的问题和矛盾。
Log4j 有一个日志级别,用来控制是否进行日志记录。
其由低到高的级别如下:ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF将日志进行分级的目的就是在于可以灵活配置。
比如说如果日志级别限定于DEBUG,那么包括DEBUG 在内的,INFO、WARN、ERROR、FATAL、OFF 都会进行日志记录;而如果级别定义为INFO,那么INFO 以下的级别,像DEBUG 的日志就不会记录。
比如如下代码:view plaincopy to clipboardprint?1.Logger log = LogManager.getLogger(HelloWorld.class);("info通过 class 对象来获取 logger 对象");3.log.debug("debug通过 class 对象来获取 logger 对象");4.log.warn("warn通过 class 对象来获取 logger 对象");如果你的 Log4j 定义为输出到控制台,日志级别定义为 INFO,那么执行到上面语句块,控制台会输出以下日志信息:18:07:37,237 INFOHelloWorld:32 - info通过 class 对象来获取logger 对象18:07:37,245 WARNHelloWorld:34 - warn通过 class 对象来获取 logger 对象具体范例作者已经上传至附件,有兴趣的朋友可以去下载下来看看。
Java开发日志分析工具Log4j使用详解Log4j是一个用于记录应用程序运行时日志的Java开发工具。
它可以帮助开发人员更好地理解和监控应用程序的运行状态,以及解决潜在的问题。
下面将详细介绍Log4j的使用方法和功能。
一、Log4j的配置文件Log4j使用一个名为log4j.properties的配置文件来定义日志的输出格式、日志级别、输出目标等。
这个配置文件需要放在应用程序的classpath下,以便Log4j能够找到它并加载配置。
配置文件中的每一个配置项都有一个特定的名称和对应的值。
例如,可以使用"log4j.rootLogger"配置项来设置根日志记录器的级别,使用"log4j.appender.console"配置项来设置控制台输出的格式等。
二、Log4j的日志级别Log4j提供了多个日志级别,用于控制日志的输出。
这些日志级别按照严重程度递增,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL。
可以通过配置文件中的"log4j.rootLogger"配置项来设置根日志记录器的级别,从而决定哪些级别的日志会被记录。
三、Log4j的输出目标Log4j可以将日志输出到不同的目标,包括控制台、文件、数据库等。
可以通过配置文件中的"log4j.appender"配置项来设置输出目标。
常用的输出目标有:1. ConsoleAppender:将日志输出到控制台。
2. FileAppender:将日志输出到文件。
3. RollingFileAppender:将日志输出到滚动文件,可以设置文件的大小和数量,以便自动滚动日志文件。
4. JDBCAppender:将日志输出到数据库。
四、Log4j的日志格式Log4j可以自定义日志的输出格式。
可以通过配置文件中的"log4j.appender"配置项来设置输出格式。
logback日志,及log4jdbc记录数据库日志--步骤这两天一直在研究logback日志记录,比我以前用的log4j的日志记录貌似更简单,更容易使用了。
所以决定了解一下logback,并将其使用在charm项目上。
之前两天一直都在弄这个logback日志。
但总是失败,很简单的jar包导进去了,测试文件写好了,但就是打印不出来日志。
还有一个更怪的问题。
日志文件夹和日志文件都给我创建出来了,但就是不能打印日志,控制台也不能够输出。
当时我用日志jar 包是:logback-access-0.9.14.jar logback-classic-0.9.14.jar logback-core-0.9.14.jar slf4j-api-1.5.6.jar 。
后来,换了几个jar包,就好使。
我之前在网上查过,logback的jar和slf4j-api的jar是要匹配的。
难道是这几个不匹配?可能是。
下面我们来看看好用的jar包:logback-classic-1.0.13.jar,logback-core-1.0.13.jar,slf4j-api-1.7.5.jar,这三个就足够了,具体可以看看/haidage/article/details/6794509,每一个节点都是什么含义。
====================================== =======================下面来描述下如何配置logback日志:1. 导入所需jar包:logback-classic-1.0.13.jar,logback-core-1.0.13.jar,slf4j-api-1.7.5.jar。
2. 写配置文件:logback.xml,放在根目录src下或者classpath 下。
logback.xml____________________________________________________logback.xml的源码文件在本片文章的最后,可以借鉴参考.第三步:编写测试文件。
slf4j 日志框架原理SLF4J 日志框架原理SLF4J(Simple Logging Facade for Java)是一个简单的日志门面框架,它为Java 程序提供了统一的日志接口,可以与多种日志实现框架集成。
本文将深入探讨SLF4J 日志框架的原理,从基础概念到具体实现进行逐步讲解。
一、日志门面框架简介在理解SLF4J 的原理之前,首先需要了解什么是日志门面框架。
日志门面框架是一种在应用程序代码中使用的基本日志接口,它提供了一种抽象层,使得应用程序可以在不改变代码的情况下灵活选择不同的日志实现。
日志门面框架主要有两个角色:日志生成器(logger)和日志输出目的地(appender)。
日志生成器负责生成日志记录,而日志输出目的地则负责将日志记录发送到合适的地方,如控制台、文件或数据库等。
SLF4J 具有简单、轻量级和与其他日志实现无缝集成的特点,因此在Java 社区得到了广泛应用。
SLF4J 提供了一套统一的日志接口,并为应用程序提供了一种通用的日志记录方式。
二、SLF4J 的基本概念和组件SLF4J 的基本概念主要包括Logger、Marker、Level 和LoggerFactory。
1. LoggerLogger 是SLF4J 最重要的组件之一,所有的日志记录操作都是通过Logger 来完成的。
Logger 用于生成日志消息,并将它们发送到日志输出目的地。
Logger 所在的层级信息可用于过滤和分类日志消息。
在SLF4J 中,Logger 是通过LoggerFactory 的getLogger() 方法获取的。
2. MarkerMarker 是一个用于标记日志记录的特定点的对象。
它可以帮助开发人员更好地组织和分类日志信息。
SLF4J 支持将Marker 附加到日志记录中,从而使日志更加明确和可读。
3. LevelLevel 是对日志记录的严重程度进行分类的枚举类型。
SLF4J 支持多个不同的日志级别,包括DEBUG、INFO、WARN、ERROR 等。
Java⽇志框架SLF4J和log4j以及logback的联系和区别1.SLF4J(Simple logging Facade for Java)意思为简单⽇志门⾯,它是把不同的⽇志系统的实现进⾏了具体的抽象化,只提供了统⼀的⽇志使⽤接⼝,使⽤时只需要按照其提供的接⼝⽅法进⾏调⽤即可,由于它只是⼀个接⼝,并不是⼀个具体的可以直接单独使⽤的⽇志框架,所以最终⽇志的格式、记录级别、输出⽅式等都要通过接⼝绑定的具体的⽇志系统来实现,这些具体的⽇志系统就有log4j,logback,java.util.logging等,它们才实现了具体的⽇志系统的功能。
如何使⽤SLF4J?既然SLF4J只是⼀个接⼝,那么实际使⽤时必须要结合具体的⽇志系统来使⽤,我们⾸先来看SLF4J和各个具体的⽇志系统进⾏绑定时的框架原理图:其实slf4j原理很简单,他只提供⼀个核⼼slf4j api(就是slf4j-api.jar包),这个包只有⽇志的接⼝,并没有实现,所以如果要使⽤就得再给它提供⼀个实现了些接⼝的⽇志包,⽐如:log4j,common logging,jdk log⽇志实现包等,但是这些⽇志实现⼜不能通过接⼝直接调⽤,实现上他们根本就和slf4j-api不⼀致,因此slf4j⼜增加了⼀层来转换各⽇志实现包的使⽤,当然slf4j-simple除外。
其结构如下:slf4j-api(接⼝层)|各⽇志实现包的连接层( slf4j-jdk14, slf4j-log4j)|各⽇志实现包所以,结合各⽇志实现包使⽤时提供的jar包情况为:SLF4J和logback结合使⽤时需要提供的jar:slf4j-api.jar,logback-classic.jar,logback-core.jarSLF4J和log4j结合使⽤时需要提供的jar:slf4j-api.jar,slf4j-log412.jar,log4j.jarSLF4J和JDK中java.util.logging结合使⽤时需要提供的jar:slf4j-api.jar,slf4j-jdk14.jarSLF4J和simple(SLF4J本⾝提供的⼀个接⼝的简单实现)结合使⽤时需要提供的jar:slf4j-api.jar,slf4j-simple.jar当然还有其他的⽇志实现包,以上是经常会使⽤到的⼀些。
第一部分快速入门首先,需要去下载LOG4J这个软件并解压缩出其中的log4j.jar.在你的应用程序的classpath 中包含该JAR文件,你也可以简单地将这个文件拷贝到JDK的%java_home%\lib\ext目录下。
在作完以上工作后,你可以将下面的代码保存到名为TestLogging.java中:##############################import org.apache.log4j.*;// How to use log4jpublic class TestLogging {// Initialize a logging category. Here, we get THE ROOT CATEGORY//static Category cat = Category.getRoot();// Or, get a custom categorystatic Category cat = Category.getInstance(TestLogging.class.getName());// From here on, log away! Methods are: cat.debug(your_message_string),// (...), cat.warn(...), cat.error(...), cat.fatal(...)public static void main(String args[]) {// Try a few logging methodscat.debug("Start of main()");("Just testing a log message with priority set to INFO");cat.warn("Just testing a log message with priority set to WARN");cat.error("Just testing a log message with priority set to ERROR");cat.fatal("Just testing a log message with priority set to FATAL");// Alternate but INCONVENIENT formcat.log(Priority.DEBUG, "Calling init()");new TestLogging().init();}public void init() {java.util.Properties prop = System.getProperties();java.util.Enumeration enum = prop.propertyNames();("***System Environment As Seen By Java***");cat.debug("***Format: PROPERTY = VALUE***");while (enum.hasMoreElements()) {String key = (String) enum.nextElement();(key + " = " + System.getProperty(key));}}}############################################################Log4J 默认情况下可以记录五个层次(由低到高)的日志消息。
slf4j 日志格式
SLF4J(Simple Logging Facade for Java)本身不提供日志实现,而是为各种现有的日志系统(如java.util.logging,logback,log4j等)提供一个简单的接口。
因此,SLF4J的日志格式取决于你使用的具体日志系统及其配置。
以Logback为例,你可以在logback.xml文件中配置日志格式,如下所示:
xml复制代码:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS}
[%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
在这个例子中,日志格式由%d(日期时间),%thread
(产生日志事件的线程名),%level(日志级别),%logger (产生日志事件的类名)和%msg(日志信息)等组成。
如果你使用的是其他日志系统,其配置方式可能会有所不同。
如果你能提供更多关于你所使用的日志系统的信息,我可以给出更具体的帮助。
java日志框架slf4j与log4j的使用与配置日志记录自然是非常重要的,但恐怕能记住slf4j与log4j等日志框架配置的人就很少了,这个东西不难,只是配置好后很少会去动它,开发新项目一般也是从其他项目拷贝,或者参照文档废话不多说,先说log4j,使用log4j只要简单的几步首先,弄到log4j的jar包,maven工程配置以下依赖就行,或者,从阿里的maven仓库下载jar包,添加到工程的“build path”<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>然后,整一个log4j.properties,内容以下面的为例,不明白不要紧,后面会详细介绍这个东西,这是log4j配置的重点log4j.rootLogger=INFO,console.apache=true#consolelog4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.Threshold=INFOlog4j.appender.console.ImmediateFlush=truelog4j.appender.console.Target=System.outyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n最后,在代码中使用package com.xmyself.log4j;import org.apache.log4j.Logger;public class Main {public static void main(String[] args) {new Test().test();}}class Test {final Logger log = Logger.getLogger(Test.class);public void test() {("hello this is log4j info log");}}运行main方法,日志信息就出来了12016-12-01 21:23:29 [INFO] hello this is log4j info log问题也来了,log4j.properties要放在哪里才能被解析呢?一、配置log4j.properties路径解析log4j.properties具体内容的肯定是log4j的jar包中的类,至于是哪个类我就不去研究了,那log4j.properties要放在哪以及怎样配置才能被解析呢?不同工程类型配置方式不同1、普通java工程或spring工程这是最常见的java工程类型,写demo用的多,把log4j.properties放在src/main/java目录(也就是包所在的根目录)运行main方法就看到日志了,终于整出了一个完整的log4j的demo!2、spring mvc工程web工程里用spring mvc构建的比较多了,把log4j.properties放在src/main/resources的conf目录(web工程配置文件通常在resources或WEB-INF目录),编辑web.xml,添加<context-param><param-name>log4jConfigLocation</param-name><param-value>classpath:/conf/log4j.properties</param-value></context-param><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener>3、普通web工程没有了spring提供的listener加载log4j.properties,我们要怎么加载这个文件呢?同样,把log4j.properties放在src/main/resources的conf目录,我们整一个servlet来加载public class Log4jServlet extends HttpServlet {private static final long serialVersionUID = 1L;public void init(ServletConfig config) throws ServletException {String prefix = this.getClass().getClassLoader().getResource("/").getPath();String path = Parameter("log4j-path");PropertyConfigurator.configure(prefix + path);}public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {}public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {}public void destroy() {}}然后配置servlet随着web工程启动而初始化,编辑web.xml,添加<servlet><servlet-name>log4j</servlet-name><servlet-class>com.xmyself.log4j.Log4jServlet</servlet-class><init-param><param-name>log4j-path</param-name><param-value>conf/log4j.properties</param-value></init-param><load-on-startup>1</load-on-startup></servlet>看着是不是和spring mvc的很像,甚至你也想到了,普通java工程没有指定log4j.properties的路径,那说明log4j的jar包一定有一个默认的路径。
Java日志框架对比:Log4j、Logback和SLF4J的选择引言:在开发Java应用程序时,日志是一个非常重要的组成部分。
它可以帮助我们记录应用程序的运行状态、调试问题以及监控系统性能。
为了更好地管理和利用日志信息,我们需要选择一个适合的日志框架。
本文将对比三个流行的Java日志框架:Log4j、Logback和SLF4J,帮助读者了解它们的特点和适用场景,以便做出正确的选择。
一、Log4jLog4j是一个广泛使用的Java日志框架,它提供了强大的日志记录功能和灵活的配置选项。
Log4j具有以下几个主要特点:1. 简单易用:Log4j的API设计简单直观,容易上手。
开发人员可以通过几行代码快速集成Log4j到应用程序中,并开始记录日志。
2. 高度可配置:Log4j提供了丰富的配置选项,可以根据需求灵活地配置日志输出格式、日志级别、目标设备等。
这使得开发人员可以根据具体需求进行精细化的日志管理。
3. 强大的过滤器机制:Log4j支持多种过滤器,可以根据日志的级别、来源、内容等进行过滤,从而实现对日志信息的精确控制。
4. 多种输出方式:Log4j支持将日志输出到控制台、文件、数据库等多种目标设备,开发人员可以根据实际需求选择合适的输出方式。
尽管Log4j在过去是Java日志领域的翘楚,但它的维护和更新已经相对较少。
因此,随着时间的推移,Log4j的性能和功能可能无法满足现代应用程序的需求。
二、LogbackLogback是由Log4j的创始人开发的下一代Java日志框架,它在Log4j的基础上进行了改进和优化。
Logback具有以下几个主要特点:1. 高性能:相比于Log4j,Logback在性能上有了显著提升。
它通过精细的设计和优化,可以更高效地处理日志记录,减少对应用程序性能的影响。
2. 灵活的配置:Logback提供了与Log4j相似的配置选项,可以根据需要自定义日志输出格式、级别、目标设备等。
Java中的日志框架比较和选择在Java开发中,日志是一个非常重要的组成部分。
它可以帮助我们记录应用程序的运行状态、排查错误和调试代码。
为了方便日志的记录和管理,我们通常会使用日志框架来处理日志信息。
本文将对Java 中常用的几种日志框架进行比较和选择,以帮助开发者在日志处理方面做出更加明智的决策。
一、Java.util.loggingJava自带的日志框架是java.util.logging(JUL),它是JavaSE平台的一部分,因此不需要额外的依赖。
JUL提供了基本的日志功能,但相对来说功能较为简单,不支持太多高级特性,例如异步日志记录、定制格式等。
JUL的使用也相对繁琐,代码的可读性不高,对于大型项目来说可能不够灵活和高效。
二、Log4jLog4j是Apache软件基金会开发的一款Java日志框架。
它是第一个广泛应用的Java日志框架,成熟稳定,拥有丰富的功能和灵活的配置选项。
Log4j支持异步日志记录、多种输出格式、丰富的过滤器、灵活的日志级别配置等。
同时,Log4j还支持插件和扩展,可以方便地与其他框架集成。
不过,由于它是早期的框架,可能存在一些性能和内存管理问题。
三、LogbackLogback是由Log4j的创始人开发的一款日志框架,可以看成是Log4j的改进版本。
它继承了Log4j的优点,同时解决了一些性能和内存管理问题。
Logback的配置方式与Log4j相似,使用起来也非常方便。
它提供了异步日志记录、可插拔的过滤器链等功能。
如果你的项目已经使用了Log4j,可以考虑将其升级到Logback来获得更好的性能和稳定性。
四、Slf4jSlf4j是Simple Logging Facade for Java的缩写,它并不是一个具体的日志框架,而是一个日志框架的门面(Facade),用于抽象底层具体的日志实现。
Slf4j提供了一套统一的API,可以让开发者在不同的日志框架之间无需修改代码,轻松切换。
Java私塾《日志框架入门》——深入浅出系列精品教程Log4j是什么、有什么n介绍Log4j是Apache的一个开放源代码项目,通过使用Log4j,可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器等;也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。
这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
n是什么一个开源的、轻量级的、用于日志管理的框架n有什么Log4j由三个重要的组件构成:日志信息的输出格式,日志信息的优先级,日志信息的输出目的地。
日志信息的优先级用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
真正高质量培训签订就业协议网址:Log4j能干什么n能干什么主要用来进行日志记录的管理,包括对日志输出的目的地,输出的信息级别和输出的格式等。
n日志类别的层次结构(Loggers)Log4j首要的相对于简单的使用System.out.println()方法的优点是基于它的在禁止一些特定的信息输出的同时不妨碍其它信息的输出的能力。
这个能力源自于日志命名空间,也就是说,所有日志声明的空间,它根据一些开发员选择的公式而分类。
Logger被指定为实体,Logger的名字是大小写敏感的,它们遵循以下的命名语法规则:用“.”来划分层次级别,如:cn.javass.test真正高质量培训签订就业协议网址:日志级别n Log4j有如下级别OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关。
n几个重要规则1:级别的控制,就是只要大于等于指定的控制级别,就可以输出2:如果有多个logger,都可以匹配输出,则每个logger都产生输出,其中根logger 匹配所有的输出;而级别控制来源于路径最详细的logger。
n如何获得日志操作类public class A {private static Logger logger= Logger.getLogger(A.class);}真正高质量培训签订就业协议网址:输出源n输出源Log4j允许日志请求被输出到多个输出源。
用Log4j的话说,一个输出源被称做一个Appender。
一个logger可以设置超过一个的appender。
n常见Appenderorg.apache.log4j.ConsoleAppender(控制台)org.apache.log4j.FileAppender(文件)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)org.apache.log4j.jdbc.JDBCAppender(把日志用JDBC记录到数据库中)真正高质量培训签订就业协议网址:布局n布局布局就是指输出信息的格式。
在Log4j中称作Layoutn常见Layoutorg.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)真正高质量培训签订就业协议网址:最常用的PatternLayout%m 输出代码中指定的消息%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL%r 输出自应用启动到输出该log信息耗费的毫秒数%c 输出所属的类目,通常就是所在类的全名%t 输出产生该日志事件的线程名%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日22:10:28,921%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
举例:Testlog4.main(TestLog4.java:10)真正高质量培训签订就业协议网址:配置示例-1n配置Log4j有两种配置方式,一种是xml格式,一种是properties格式。
都是放置到classpath下面。
默认名称分别是:log4j.xml和log4j.propertiesn properties配置示例如下:log4j.rootLogger=error,javass.Console,javass.Filelog4j.appender.javass.Console=org.apache.log4j.ConsoleAppenderyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{HH:mm:ss,SSS} %5p (%C{1}:%M) -%m%n真正高质量培训签订就业协议网址:配置示例-2log4j.appender.javass.File=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.javass.File.file=javass.loglog4j.appender.javass.File.DatePattern=.yyyy-MM-ddyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{HH:mm:ss,SSS} %5p (%C{1}:%M) -%m%n.javass=debug真正高质量培训签订就业协议网址:Appender、Layout、Logger三者之间的关系通过前面的讲解,我们可以在配置文件中看出以下关系:n每个Appender都要引用自己的Layout。
n每个Logger都可以指定一个级别,同时引用多个Appender;而一个Appender也同时可以被多个Logger引用。
真正高质量培训签订就业协议网址:配置示例-3n xml配置示例如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j='/log4j/'> <appender name="test" class="org.apache.log4j.ConsoleAppender"><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern"value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} -%m%n" /></layout></appender>真正高质量培训签订就业协议网址:配置示例-4<appender name="file"class="org.apache.log4j.DailyRollingFileAppender"><param name="File" value="E:/test.log" /><param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern"value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} -%m%n" /></layout></appender><logger name="cn.javass" additivity="true"><level value="debug" /><appender-ref ref="file" /></logger><root><level value="error"/><appender-ref ref="test" /><appender-ref ref="file" /></root></log4j:configuration>真正高质量培训签订就业协议网址:log4j.xml比log4j.properties多的功能-1n首先要注意,log4j.xml优先于log4j.properties,如果同时存在log4j.xml和log4j.properites,以log4j.xml为准。
n在log4j.properties里,控制级别的时候,只能打印出大于指定级别的所有信息;但是在log4j.xml中可以通过filter来完成过滤:典型的引用是只打印出某种级别的信息。
<appender name="log.file"class="org.apache.log4j.DailyRollingFileAppender"><filter class="org.apache.log4j.varia.LevelRangeFilter"><param name="levelMin" value="info" /><param name="levelMax" value="info" /><param name="AcceptOnMatch" value="true" /></filter></appender>真正高质量培训签订就业协议网址:log4j.xml比log4j.properties多的功能-2n可以通过logger的additivity=“false”属性,来设置多个logger是否重复输出同一条信息<logger name="cn.javass1" additivity="false"><level value="debug" /><appender-ref ref="log.console" /><appender-ref ref="log.file" /></logger>真正高质量培训签订就业协议网址:在java中使用log4j中要注意的小问题n看似奇怪的重复级别判断:我们在看一些成熟框架的源代码中,经常看到如下代码:if (logger.isDebugEnabled()){logger.debug(“debug:“+name);}为什么不是直接logger.debug(“debug:“+name);呢?在配置文件中虽然可以使用控制级别为比debug级别更高的级别,而不输出debug信息;但是,这里的字符串连接操作仍然会影响运行效率;如果先判断当前logger的级别,如果级别不合适的话,连这句字符串连接都可以不做了。