1、log4j是什么?
Log4j是Apache的一个开放源代码项目,通过使用Log4j,可以控制日志信
息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记
录器等;也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,
能够更加细致地控制日志的生成过程。这些可以通过一个配置文件来灵活地进行
配置,而不需要修改应用的代码。一个开源的、轻量级的、用于日志管理的框架。
2、Log4j由三个重要的组件构成:
日志信息的输出格式,日志信息的优先级,日志信息的输出目的地。
3、Log4j的类:
Logger - 日志写出器,供程序员输出日志信息
Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去
ConsoleAppender - 目的地为控制台的Appender
FileAppender - 目的地为文件的Appender
RollingFileAppender - 目的地为大小受限的文件的Appender
Layout - 日志格式化器,用来把程序员的logging request格式化成字符串
PatternLayout - 用指定的pattern格式化logging request的Layout
4、Layout中可选的格式:
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,
比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及行数。
举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
5、配置实例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/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>
<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>
6、在代码中使用Log4j:
1. 得到记录器
private static Log logger = LogFactory.getLog(AccessTokenController.class);
2.插入记录信息(格式化日志信息)
您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:
Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
7、Loger.getLoger和LogFactory.getLog区别
以下内容转载自:
http://qyongkang.iteye.com/blog/379532
Logger来自log4j自己的包。如果用Logger.getLogger,需要一个log4j的jar包,用此方式你只能依靠log4j: 而LogFactory来自common-logging包。
如果用LogFactory.getLog,你可以用任何实现了通用日志接口的日志记录器替换log4j,而程序不受影响。apache的common-logging包是通用日志接口,
通过这个中间层,你可以随便指定到底用哪个日志系统。增加系统的灵活性。若log4j它不存在, commons-logging 会另行选择其它的日志实现类。
这样保证了程序中不一定要使用log4j这个日志文件了
增强灵活性的理由:
1)首先在 classpath 下寻找自己的配置文件 commons-logging.properties ,如果找到,则使用其中定义的 Log 实现类;
2)如果找不到 commons-logging.properties 文件,则在查找是否已定义系统环境变量 org.apache.commons.logging.Log ,找到则使用其定义的 Log 实现类;
3)否则,查看 classpath 中是否有 Log4j 的包,如果发现,则自动使用 Log4j 作为日志实现类;
4)否则,使用 JDK 自身的日志实现类( JDK1.4 以后才有日志实现类);
5)否则,使用 commons-logging 自己提供的一个简单的日志实现类 SimpleLog ;
为了简化配置 commons-logging ,一般不使用 commons-logging 的配置文件,也不设置与 commons-logging 相关的系统环境变量,
而只需将 Log4j 的 Jar 包放置到 classpash 中就可以了。这样就很简单地完成了 commons-logging 与 Log4j 的融合。
根据不同的性质,日志信息通常被分成不同的级别,从低到高依次是:调试( DEBUG )信息( INFO )警告( WARN )错误(ERROR )致命错误( FATAL )。
基于common-logging的运行方式:
package org;
import org.apache.commons.logging.Log;
import org.apache.log4j.Logger;
public class Test extends TagSupport{
public static Log log=LogFactory.getLog(Test.class);
public static void test()
{
log.debug("111");
log.info("125");
log.warn("485");
log.error("error");
}
public static void main(String[] a)
{
Test.test();
}
}
基于log4j的运行方式
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class TestLog4j {
static Logger logger = Logger.getLogger(TestLog4j.class);
public static void main(String args[]) {
PropertyConfigurator.configure("log4j.properties");
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
-----------
commons-logging 仅仅对 Log4j( 当然还包括其它 LOG 实现 ) 作了一层包装,具体的日志输出还是在内部转交给身后的 Log4j 来处理,
还有log4j会默认的去classes目录下去寻找log4j.properties 文件
分享到:
相关推荐
标题“log4j学习”指出我们将探讨的是日志处理框架Log4j,这是一个广泛使用的Java日志工具,主要用于记录应用程序运行过程中的各种事件和异常信息。描述部分虽然为空,但通常在学习Log4j时,我们会涉及它的基本概念...
**log4j学习源码教程** 在Java编程中,日志记录是不可或缺的一部分,它能够帮助开发者追踪程序运行状态,定位错误和异常,为调试和性能优化提供关键信息。Log4j是Apache组织开发的一个开源日志框架,因其强大的功能...
**Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录工具,由Apache软件基金会开发。它提供了一种灵活且强大的机制来记录应用的运行情况,这对于调试、性能分析、问题追踪以及系统监控至关重要。这篇学习...
**Log4j学习笔记** Log4j是一款广泛应用于Java编程中的日志记录框架,由Apache软件基金会开发。它提供了一套灵活的日志记录系统,帮助开发者在开发过程中追踪应用程序的行为,便于调试、性能分析和问题排查。Log4j...
《Log4j学习指南》 Log4j是Java平台上的一个开源日志框架,它为开发者提供了灵活且强大的日志记录功能。这个压缩包包含了关于Log4j的全面学习资料,包括文档、API手册和配置指南,对于深入理解和使用Log4j来说,是...
### log4J学习笔记 #### 一、Apache Commons Logging与log4j及JDK Logger的关系 **Apache Commons Logging** 的设计初衷是为了提供一个简洁统一的日志接口,它并不直接实现日志功能,而是通过桥接的方式支持多种...
### Log4j 学习笔记知识点详解 #### 一、Log4j 概述与架构 **Log4j** 是 **Apache** 组织提供的一个开源日志框架,旨在简化应用开发中的日志记录工作。它能够灵活地记录程序运行时的信息,并允许用户自定义日志的...
"log4j 学习笔记" log4j 是一个流行的 Java 日志记录工具, logger 是记录日志信息的基本单元。在 log4j 中, logger 的级别越低,记录的日志信息越详细。 Logger 的级别从低到高依次是:ALL 。 log4j 的日志记录...
### Log4J学习笔记 #### 一、Log4J配置文件的学习 在深入理解Log4J之前,我们先从配置文件入手。Log4J支持多种配置文件格式,其中包括XML和Java特性文件(键=值)。这里我们将重点介绍如何使用Java特性文件作为...
分别有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学习笔记知识点详解 #### 一、Log4j概述 - **定义与功能**:Log4j是Apache组织推出的一个开源日志框架,主要用于控制和管理应用程序中的日志记录过程。它允许开发者非常灵活地配置日志输出的目的地(如...
【Log4j学习文档】 Log4j是一款广泛应用于Java开发中的开源日志记录工具,源自IBM Zurich实验室,现已成为Jakarta项目的一部分。它的主要优点在于灵活性、模块化和易用性,开发者可以根据需要以不同粒度输出日志...
### log4j学习入门知识点详解 #### 一、Log4j简介 Log4j是一款开源的日志框架,由Apache组织提供。它可以帮助开发者轻松地在应用程序中添加日志功能,从而便于追踪应用程序的状态和行为。Log4j的主要优势在于其...
### Log4j学习笔记 #### 一、Log4j简介 Log4j是Apache的一个开源项目,用于实现日志功能的Java库。它允许开发者控制日志信息的生成、格式和输出目标。Log4j的强大之处在于它的灵活性和扩展性,能够适应不同层次的...
在"Log4j 学习资料 API+ 源文件+例子"这个资源包中,包含了 Log4j 的 API 文档、源代码和实例,非常适合学习和深入理解 Log4j。 1. **API 文档**:Log4j 的 API 文档是了解其功能和用法的关键。它详细列出了各种类...
在学习Log4j的过程中,阅读“log4j学习笔记及写入数据库配置”这份资料将有助于深入理解Log4j的使用,包括具体的配置步骤、常见问题以及最佳实践。通过实践,你可以更好地掌握如何利用Log4j来提升你的应用程序的可...
Log4j2 配置模板学习笔记 Log4j2 是 Java 语言中一种流行的日志记录工具,它提供了灵活的日志记录管理功能。下面我们将学习 Log4j2 配置模板的使用和配置。 引入 Log4j2 依赖 在使用 Log4j2 之前,需要在 Maven ...