`

详细介绍Log4j

 
阅读更多
原文地址:http://www.186info.com/?p=139
① Log4j的架构
Log4j系统的三大板块:日志写入器、日志输出终端、日志布局模式


<span style="color: #ff0000;">Logger类是日志包的核心,Logger的名称是大小写敏感的,并且名称之间有继承关系。子名由父名做前缀,用点号“.”分隔,如x.y是x.y.z的父亲Logger。Logger系统中有个根logger,是所有logger的祖先,它总是存在的,并且不可以通过名字获取,可以通过Logger.getRootLogger()来获取。获取Logger对象的方法很多,可以参考API文档,在某对象中,用该对象所属的类作为参数,调用Logger.getLogger(Class clazz)以获取logger对象被认为是目前所知最理智的命名logger方法</span>。

②Log4j的日志级别(Level)
每个logger都有一个日志级别,用来控制日志的输出。未分配级别的logger将自动继承它最近的父logger的日志级别。Logger的由低到高级别如下:
ALL&lt;DEBUG&lt;INFO&lt;WARN&lt;ERROR&lt;FATAL&lt;OFF

③Log4j的输出终端(Appender接口)
Log4j提供了以下几个实现:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天都产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸时产生一个新的日志文件,文件名称上会自动添加数字序号。)
org.apache.log4j.WriterAppender(将日志信息以流的格式发送到任意指定的地方)
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天都产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸时产生一个新的日志文件,文件名称上会自动添加数字序号。)
org.apache.log4j.WriterAppender(将日志信息以流的格式发送到任意指定的地方)

默认情况下,子logger将继承父logger的所有appenders。

④Log4j的输出布局模式(Layout接口)
Log4j提供Layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)

Log4j采用类似C语言中的printf函数的打印格式格式化日志信息。打印参数如下:
%m:输出代码中指定的消息。
%p:输出优先级。
%r:输入自应用启动到输出该log信息耗费的毫秒数。
%c:输出所属的类目,通常就是所在类的全名。
%t:输出产生该日志线程的线程名。
%n:输出一个回车换行符。Windows平台为“\r\n”,UNIX为“\n”。
%d:输出日志时间点的日期或时间,默认格式为ISO8601,推荐使用“%d{ABSOLUTE}”,这个输出格式形如:“2007-05-07 18:23:23,500”,符合中国人习惯。
%l:输出日志事件发生的位置,包括类名、线程名,以及所在代码的行数。
%m:输出代码中指定的消息。
%p:输出优先级。
%r:输入自应用启动到输出该log信息耗费的毫秒数。
%c:输出所属的类目,通常就是所在类的全名。
%t:输出产生该日志线程的线程名。
%n:输出一个回车换行符。Windows平台为“\r\n”,UNIX为“\n”。
%d:输出日志时间点的日期或时间,默认格式为ISO8601,推荐使用“%d{ABSOLUTE}”,这个输出格式形如:“2007-05-07 18:23:23,500”,符合中国人习惯。
%l:输出日志事件发生的位置,包括类名、线程名,以及所在代码的行数。

⑤Log4j的配置
在实际使用中,Log4j一般是通过配置文件配置使用的。配置文件有两种,Java properties和XML文件。一般都选用properties文件来配置,因为简洁易读。下面只介绍Java properties的配置方式。
对Log4j的配置就是对rootLogger和子Logger的配置。主要的配置项为:rootLogger、输出终端、输出布局模式,所有的配置项都必须以log4j开头。
配置文件的示例:

##Log4J的配置之简单使它遍及于越来越多的应用中了

##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。

##此文件(log4j.properties)内容来自网络,非本文作者liigo原创。
log4j.rootLogger = DEBUG, CONSOLE,A1
log4j.addivity.org.apache = true

# 应用于控制台
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.Threshold = DEBUG
log4j.appender.CONSOLE.Target = System.out
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n
#log4j.appender.CONSOLE.layout.ConversionPattern = [start] % d {DATE} [DATE] % n % p[PRIORITY] % n % x[NDC] % n % t[THREAD] n % c[CATEGORY] % n % m[MESSAGE] % n % n

#应用于文件
log4j.appender.FILE = org.apache.log4j.FileAppender
log4j.appender.FILE.File = file.log
log4j.appender.FILE.Append = false
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n
# Use this layout for LogFactor 5 analysis

# 应用于文件回滚
log4j.appender.ROLLING_FILE = org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold = ERROR
log4j.appender.ROLLING_FILE.File = rolling.log
log4j.appender.ROLLING_FILE.Append = true
log4j.appender.ROLLING_FILE.MaxFileSize = 10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex = 1
log4j.appender.ROLLING_FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n

#应用于socket
log4j.appender.SOCKET = org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost = localhost
log4j.appender.SOCKET.Port = 5001
log4j.appender.SOCKET.LocationInfo = true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout = org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern = [start] % d {DATE} [DATE] % n % p[PRIORITY] % n % x[NDC] % n % t[THREAD] % n % c[CATEGORY] % n % m[MESSAGE] % n % n

# Log Factor 5 Appender
log4j.appender.LF5_APPENDER = org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords = 2000

# 发送日志给邮件
log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold = FATA
log4j.appender.MAIL.BufferSize = 10
log4j.appender.MAIL.From = web@www.wuset.com
log4j.appender.MAIL.SMTPHost = www.wusetu.com
log4j.appender.MAIL.Subject = Log4J Message
log4j.appender.MAIL.To = web@www.wusetu.com
log4j.appender.MAIL.layout = org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n

# 用于数据库
log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL = jdbc:mysql: // localhost:3306/test
log4j.appender.DATABASE.driver = com.mysql.jdbc.Driver
log4j.appender.DATABASE.user = root
log4j.appender.DATABASE.password =
log4j.appender.DATABASE.sql = INSERT INTO LOG4J (Message) VALUES ( ' [framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ' )
log4j.appender.DATABASE.layout = org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n
log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File = SampleMessages.log4j
log4j.appender.A1.DatePattern = yyyyMMdd - HH ' .log4j '
log4j.appender.A1.layout = org.apache.log4j.xml.XMLLayout

#自定义Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net
log4j.appender.im.layout = org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern = [framework] % d - % c -%- 4r [ % t] %- 5p % c % x - % m % n

log4j的logger继承

1、log4j的继承是通过命名来实现的。

比如logger.a.b就会继承logger.a的一些设置。

2、子logger会默认继承父logger的appender。

如果配置中这样写:logger.a=INFO,app_a,logger.a.b=DEBUG,app_b,那么实际上,logger.a.b的配置是这样的:logger.a.b=DEBUG,app_b,app_a。

3、子logger只在自己未定义输出级别的情况下,才会继承父logger的输出级别。

比如配置中这样写:logger.a=DEBUG,app_a,logger.a.b=,app_b,那么实际上,logger.a.b的配置是:logger.a.b=DEBUG,app_b,app_a。

但是如果配置中这样写:logger.a=DEBUG,app_a,logger.a.b=INFO,app_b,那么实际上,logger.a.b的输出级别就是INFO,而不会继承logger.a的DEBUG。这样,如果用logger.a.b记录DEBUG信息,它是不会向app_a输出的。

分享到:
评论

相关推荐

    log4j 详细配置参考

    log4j 详细配置 log4j 详细配置 log4j 详细配置 log4j 详细配置

    log4j 非常详细的介绍

    Log4j 详细介绍 Log4j 是一个帮助开发人员进行日志输出管理的 API 类库。它最重要的特点是可以配置文件灵活地设置日志信息的优先级、日志信息的输出目的地以及日志信息的输出格式。Log4j 除了可以记录程序运行日志...

    老生常谈Log4j和Log4j2的区别(推荐)

    下面我们将从配置文件类型、核心JAR包、文件渲染和Log调用四个方面来比较Log4j和Log4j2的区别。 配置文件类型 Log4j通过一个.properties文件作为主配置文件,而Log4j2则弃用了这种方式,采用的是.xml、.json或者....

    log4j的详细配置

    下面将详细介绍Log4J的配置。 **配置文件** Log4J的配置文件一般以.properties或.xml格式存在,用于定义日志行为。基本的配置结构如下: ```properties # 配置根Logger log4j.rootLogger=[level], appenderName1, ...

    Log4J完整说明和配置

    本文将围绕一份示例配置文件来详细介绍Log4J的配置方法。 #### 二、核心概念 在深入分析配置文件之前,我们先了解几个Log4J中的核心概念: - **Logger**:负责接收并处理日志信息的对象。 - **Appender**:指定日志...

    log4j-1.2.11jar和log4j.properties配置文件

    本篇将详细介绍Log4j 1.2.11版本以及其核心组件——`log4j.properties`配置文件。 **一、Log4j简介** Log4j是基于组件的日志框架,它提供了一种灵活的方式来记录应用程序中的事件。这些事件可以是错误、警告、调试...

    log4j与log4j.properties的配置.doc

    在本文中,我们将详细介绍 Log4j 的配置,包括配置步骤、log4j.properties 配置文件、日志输出级别、appenders 和 layouts 等。 一、配置步骤 要使用 Log4j,需要遵循以下配置步骤: 1. 在应用程序中使用 Log4j,...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...

    log4j使用详细方法

    本文将详细介绍Log4j的配置方法、使用实例以及相关说明,旨在帮助读者快速掌握这一实用工具。 **一、Log4j的核心组件** 1. **Logger**: 日志记录器,负责实际的日志输出,可以根据不同的级别(DEBUG, INFO, WARN, ...

    logging-log4j2-log4j-2.15.0-rc2.zip maven 资源库

    针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...

    Log4j2学习用到的jar包及apache-log4j-2.19.0-bin.zip

    分别有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.jar各个版本

    apache-log4j-1.2.15.jar, apache-log4j-extras-1.0.jar, apache-log4j-extras-1.1.jar, apache-log4j.jar, log4j-1.2-api-2.0.2-javadoc.jar, log4j-1.2-api-2.0.2-sources.jar, log4j-1.2-api-2.0.2.jar, log4j-...

    SpringBoot框架配置log4j和log4j2的配置代码

    本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,用于生成日志。它的核心功能包括定义日志级别(如DEBUG、INFO、WARN、ERROR),配置日志输出目的...

    Log4j2简介及与Log4j效率对比

    ### Log4j2简介 Log4j2是Apache软件基金会推出的日志框架,它是Log4j 1.x的重构版本,旨在提供更为高效且灵活的日志解决方案。与Log4j 1.x相比,Log4j2在设计上进行了重大改进,并解决了Logback等其他日志框架中...

    log4j.zip 项目日志

    本文将围绕“log4j.zip”项目日志,详细介绍Log4j的基本概念、配置、使用方法以及优化策略。 一、Log4j简介 Log4j是由Apache软件基金会开发的一款开源日志组件,适用于Java平台。它的设计理念是提供一个灵活且高效...

    Log4j配置文件详细说明

    本篇将详细介绍Log4j的配置文件及其常用属性,旨在帮助初学者快速掌握Log4j的配置方法。 首先,Log4j的配置文件通常是`log4j.properties`或`log4j.xml`,用于定义日志输出的行为。这里我们主要讨论基于文本格式的`...

    java程序log4j配置

    在Java程序中,log4j配置正确是非常重要的,本文将详细介绍log4j配置的各个方面。 一、log4j配置文件 log4j的配置文件通常是log4j.properties或log4j.xml,用于存储log4j的配置信息。配置文件中可以指定日志的输出...

    log4j 1.2.15

    本文将详细介绍Log4j 1.2.15的核心概念、配置以及如何在实际应用中使用。 **一、Log4j简介** Log4j提供了一种灵活的、可扩展的日志记录机制,它允许开发者根据需要调整日志级别,控制输出内容,以及选择不同的日志...

    Log4j2介绍和使用

    这个文档将详细介绍Log4j2的所有功能、配置选项以及如何在实际项目中有效利用它们。通过阅读这些文档,开发者可以更深入地理解Log4j2的工作原理,学习如何根据项目需求定制日志策略,以及如何解决可能出现的问题。 ...

    Log4j api 下载

    本文将详细介绍Log4j API,并指导如何下载和使用。 1. **Log4j 概述** - **目标**:Log4j 的主要目标是提供一种可配置、高性能的日志服务,帮助开发者在不同的环境和场景下进行调试、性能监控和错误追踪。 - **...

Global site tag (gtag.js) - Google Analytics