log4j

✍ dations ◷ 2025-09-11 15:44:56 #log4j

Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 log4j是几种Java日志框架(英语:Java logging framework)之一。

Gülcü此后开创了SLF4J和Logback 项目,意图成为log4j的继任者。

log4j团队创建了log4j的继任者,版本号为2.0的新版本。log4j 2.0着重于log4j 1.2、1.3、java.util.logging和logback中的问题,并解决这些框架中的架构问题。此外,log4j 2.0提供了一个插件架构,这使得其更可扩展。log4j 2.0不是与1.x向后兼容的版本,虽然有一个“适配器”可用。

下表中定义的log4j 1的日志级别和消息,以严重性递减排序。左栏列出了log4j的日志级别定义,右列提供了每个日志级别的简要说明。

有三种方法来配置log4j:通过.properties文件,通过XML文件,通过Java代码。通过上述任意方法,你可以定义log4j的三个主要组件:Logger、Appender和Layout。通过文件配置log4j,具有无需修改应用即可打开或关闭日志的好处。例如,应用程序可以在日志关闭的情况下运行,直到问题出现后,再日志功能可以简单地通过修改配置文件重新打开。

Logger(记录器)是日志的逻辑文件名。其使用已知的Java应用程序的名称。每个记录器当前以什么日志记录级别(FATAL、ERROR等)记录是独立配置的。在log4j的早期版本中,这些被称为类别(category)和优先级(priority),但现在他们分别被称为logger(记录器)和level(级别)。

实际的输出是通过Appender(输出源)。有许多可用的Appender,比如FileAppender、ConsoleAppender、SocketAppender、SyslogAppender、NTEventLogAppender,甚至SMTPAppender。多个Appender可以被关联到任何Logger上,所以可以到多个输出文件上记录相同的信息,例如同时到一个本地文件和通过套接字监听器到另一台计算机上。

Appender使用Layout(布局)格式化日志条目。常用的格式化为“一次一行”式日志文件的布局是PatternLayout,其使用一个模式字符串,就像C/C++函数printf那样。此外还有HTMLLayout和XMLLayout,使用HTML或XML格式的时候会更方便。

要调试一个表现异常的配置文件,使用Java VM参数-Dlog4j.debug通过标准输出输出Log4j自身的信息。要获知log4j.propeties的路径,检查getClass().getResource("/log4j.properties")getClass().getResource("/log4j.xml")

log4j还有一个隐含的“未配置”配置,即一个缺乏log4j的配置但使用了log4j的Java应用程序。这将把一个警告(该程序未配置log4j)打印到标准输出,并提供log4j网站的URL,在那里可以找到警告和配置的详细信息。除了打印此警告,未配置的log4j的应用程序不会打印INFO、DEBUG或TRACE级别的消息,而且还可能不输出更高级别的消息。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"><log4j:configuration>    <!--          appender指定输出目的地,如控制台或文件;         appender的名称任意    -->    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern"                value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />        </layout>    </appender>     <!--          category(类别)为'org.springframework'的logger只记录level为“info”或更高级别的消息;         即:如果您使用的类名获取logger(如Logger.getLogger(AClass.class))         而且AClass是org.springframework包的一部分,则它属于这一category    -->    <logger name="org.springframework">        <level value="info"/>    </logger>    <!--          spring的所有日志消息都被设置为“info”等级,但对于类PropertyEditorRegistrySupport,         我们想将其日志消息设置为“debug”等级    -->    <logger name="org.springframework.beans.PropertyEditorRegistrySupport">        <level value="debug"/>    </logger>     <logger name="org.acegisecurity">        <level value="info"/>    </logger>            <root>        <!--             所有日志消息的级别为“debug”或更高的将被记录,除非另有定义            所有日志消息将都记录到appender “stdout”中,除非另有定义        -->        <level value="debug" />        <appender-ref ref="stdout" />    </root></log4j:configuration>

TTCC

TTCC是log4j使用的消息格式。TTCC是(时间、线程、类别、组件)的缩写。例如,采用以下模式(pattern):

 %r  %-5p %c %x - %m%n

模式转换表为:

示例输出
467 INFO org.apache.log4j.examples.Sort - Exiting main method.

Apache Log4j 2是Log4j 1的继任者,2014年7月其GA版本(正式发布版)发布。该框架被从头重写,并从现有的日志解决方案中获得灵感(包括Log4j 1和JUL)。该版本与Log4j 1的主要差异是:

Log4j 2的最被认可的特点之一是“异步记录器”的性能。Log4j 2利用了LMAX Disruptor (页面存档备份,存于互联网档案馆)。例如,在相同的环境下,Log4j 2可以写每秒超过18,000,000条信息,而其他框架(像Logback和Log4j 1)每秒只能写< 2,000,000条消息。

Log4j 2提供对SLF4J、Commons Logging、Apache Flume和Log4j 1的支持。

相关

  • 日本温泉列表日本温泉一览是依照《温泉法》,将日本的温泉地点依照各都道府县列出的一览表。按日本图例,温泉在日本的地图上常用温泉记号(♨)标示。北海道 青森县 | 岩手县 | 宫城县 | 秋田
  • 现行宪法意大利共和国宪法(意大利语:Costituzione della Repubblica italiana)是1947年12月22日由意大利国民代表大会以453票支持、62票反对通过的宪法。迄今为止已经基于1947年12月27
  • 印度民族大起义哗变的印度兵被不列颠东印度公司剿除大英帝国东印度公司尼泊尔21个印度土邦:印度民族起义指1857-1858年期间印度反对不列颠东印度公司殖民统治的一次失败的大型起义。学界对此
  • 无宗派基督徒非宗派教会(英语:Nondenominational Church),也叫独立教会(英语:Independent Church),是基督教教会组织的一种。 在教会组织体制上与传统教会、宗派、神学、信条等没有共融或隶属关
  • 感知异常心理学 行为遗传学 生物心理学 心理药物学 认知心理学 比较心理学 跨文化心理学 文化心理学 差异心理学(英语:Differential psychology) 发展心理学 进化心理学 实验心理学
  • 乔治·格罗夫斯乔治·罗伯特·格罗夫斯(英语:George Robert Groves)是一位电影音效先锋,在开发将声音带入静音屏幕的技术方面发挥了重要作用。他也被誉为好莱坞的第一个‘音效人’;他是开创性的
  • 危险人物《危险人物》是亚洲电视制作的奇案式剧集,监制是郑伟文,共30集,2005年首播。故事以翁静晶所著的同名作品《危险人物》为蓝本并从中精选了十一个个案,并请来翁静晶担任顾问及主持
  • 中国机械对外经济技术合作中国机械对外经济技术合作总公司,国机集团旗下公司。总部位于中国北京市,是在1980年成立。其主要承包工程、成套设备的出口与合作生产等业务。在1997年,已被国机集团收购。
  • 泰西·安东尼泰西·安东尼-德·拿骚(英语:Tessy Antony-de Nassau,1985年10月28日-),卢森堡前王室成员和社会活动家。婚前,她在卢森堡军队服役。服役期间认识了路易王子并在2006年3月在瑞士诞下
  • 狗与剪刀的正确用法狗与剪刀的正确用法铰剪狗《狗与剪刀的正确用法》(日语:犬とハサミは使いよう),简称“狗剪”(犬ハサ),是日本的轻小说作品。作者为更伊俊介,锅岛哲弘(鍋島テツヒロ)绘制插画。为第12届Entame大奖小说部门优秀赏的得奖作品和第一届《店员最爱轻小说大赏》第十位。2013年7月起播出电视动画。故事主角春海和人被强盗杀死了。然而,他对于书的执著让他再一次的复活。只是这次不是身为人,而是身为一只狗被IGGY动物店的老板救了。苦于无法看书的他,有一天出现了一位穿着一身黑的女子。她能听得懂春海和人的话,也是一个以剪刀