`
程硕tkggddm
  • 浏览: 19003 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

log4j 扩展

阅读更多
1、Java代码中获取Logger可通过org.apache.log4j.Logger类的getLogger()方法即可。
public static Logger log = Logger.getLogger(Log4jTest1.class);  
当然如果我们在配置Log4j的时候,如果配置文件路径没有按照约定加入到classpath中的话,我们也可以通过Java代码去加载该配置文件。

BasicConfigurator.configure():自动快速地使用缺省Log4j环境。  
PropertyConfigurator.configure(StringconfigFilename):读取使用Java的特性文件编写的配置文件。  
DOMConfigurator.configure(Stringfilename):读取XML形式的配置文件。  
最后我们就可以直接使用日志对象来输出日志了。调用log对象的各种输出日志方法,比如debug(),比如info()方法等等。

2、配置Log4j:要使用配置文件才能配置Log4j→log4j.xml配置文件后者log4j.properties配置文件

通常,我们都提供一个名为log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf/class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可)中定位这个文件,并读入这个文件完成的配置。这个配置文件告诉Log4J以什么样的格式、把什么样的信息、输出到什么地方。

 Layout:格式化输出日志信息

Appender必须使用一个与之相关联的Layout,这样才能知道怎样格式化输出日志信息。

日志格式化器Layout负责格式化日志信息,方法log.error()的参数只包含日志信息,利用Layout可以附加其他信息,以输出更多的信息或者布局显示。

PatternLayout:根据指定的转换模式格式化日志输出
HTMLLayout:格式化日志输出为HTML表格

XMLLayout:格式化日志输出为XML文件

SimpleLayout:以一种非常简单的方式格式化日志输出

TTCCLayout:包含日志产生的时间、线程、类别等信息

 实际编码中,我们使用最多的就是PatternLayout布局。

这里我们详细整理下该日志格式化器。PatternLayout是最常用的格式化器,用户可以自定义信息,比如日期,时间,所在的线程,类型,方法名等等。

# 以下是rootLogger的配置,子类默认继承,但是子类重写下面配置=rootLogger+自己配置,我晕  
#输出到控制台     
log4j.appender.console=org.apache.log4j.ConsoleAppender    
#设置输出样式     
log4j.appender.console.layout=org.apache.log4j.PatternLayout   
#日志输出信息格式为  
log4j.appender.console.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n   
#DEBUG以上级别输出,Threshold,入口,临界值  
#log4j.appender.console.Threshold=DEBUG  
#日志编码方式  
#log4j.appender.console.Encoding=UTF-8  
#是否立即输出  
#log4j.appender.console.ImmediateFlush=true  
#使用System.error作为输出  
#log4j.appender.console.Target=System.error  
使用ConversionPattern自定义样式
关于ConversionPattern该属性的说明,该属性设置了日志输出的格式,具体的

 

#自定义样式     
#%c 输出所属的类目,通常就是所在类的全名   
#%C 输出Logger所在类的名称,通常就是所在类的全名   
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},%d{ABSOLUTE},%d{DATE}  
#%F 输出所在类的类名称,只有类名。  
#%l 输出语句所在的行数,包括类名+方法名+文件名+行数  
#%L 输出语句所在的行数,只输出数字  
#%m 输出代码中指定的讯息,如log(message)中的message  
#%M 输出方法名  
#%p 输出日志级别,即DEBUG,INFO,WARN,ERROR,FATAL  
#%r 输出自应用启动到输出该log信息耗费的毫秒数  
#%t 输出产生该日志事件的线程名  
#%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”  
#%% 用来输出百分号“%”  
#log4j.appender.Linkin.layout.ConversionPattern=%n[%l%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M] %m    
#log4j.appender.Linkin.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[%C]-[%p] %m%n     
#log4j.appender.Linkin.layout.ConversionPattern = %d{ABSOLUTE} %5p %t %c{2}:%L - %m%n  

 PatternLayout格式化器的补充说明:

1,Log4j能输出形形色色的参数,这些参数内容的长度不同。比如%C输出的类名,有的类名很长,有的类名很短,这会导致日志比较凌乱。为了解决该问题,Log4j允许设置输出内容的长度等,不够长的会用空格补齐,使输出内容变得整齐。

 

2,设置方法是在%与参数符号间添加数字,例如%20p,%-20p等。正数表示右对齐,负数表示左对齐,数字表示最小宽度,不足时用空格补齐。

3,还可以设置最大宽度,如果超出,则截取,方法是用小数点+数字设置,例如%.40p。

HTMLLayout将日志格式化为HTML代码,输出到文件后,可以直接用浏览器浏览。使用该格式化器时,日志文件后缀一般为.html。

#输出到文件(这里默认为追加方式)     
log4j.appender.file=org.apache.log4j.FileAppender   
#输出文件位置  
log4j.appender.file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/log4j.log  
#是否在原日志基础上追加输出日志。true,默认,追加。false,清掉原来日志重新添加  
log4j.appender.file.Append=true  
#样式为TTCCLayout     
#log4j.appender.file.layout=org.apache.log4j.TTCCLayout  
#样式为HTMLLayout  
log4j.appender.file.layout=org.apache.log4j.HTMLLayout  
log4j.appender.file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/log4j.html  
#log4j.appender.file.layout=org.apache.log4j.PatternLayout  
#log4j.appender.file.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n  

 XMLLayout把日志内容格式化成XML文件,XML文件的好处就是解析比较容易,因为有现成的DOM技术和SAX技术。配置时候只需要将appender的layout设置为XMLLayout即可。

 

值得注意的是:XMLLayout生成的并不是完整的XML文件,而只是XML文件的一部分,因此是无法直接打开和解析的。

 

1,Java代码中获取Logger。通过org.apache.log4j.Logger类的getLogger()方法即可。
public static Logger log = Logger.getLogger(Log4jTest1.class);  
当然如果我们在配置Log4j的时候,如果配置文件路径没有按照约定加入到classpath中的话,我们也可以通过Java代码去加载该配置文件。
BasicConfigurator.configure():自动快速地使用缺省Log4j环境。  
PropertyConfigurator.configure(StringconfigFilename):读取使用Java的特性文件编写的配置文件。  
DOMConfigurator.configure(Stringfilename):读取XML形式的配置文件。  
最后我们就可以直接使用日志对象来输出日志了。调用log对象的各种输出日志方法,比如debug(),比如info()方法等等。

2,配置Log4j。要使用配置文件才能配置Log4j→log4j.xml配置文件后者log4j.properties配置文件

通常,我们都提供一个名为log4j.properties的文件,在第一次调用到Log4J时,Log4J会在类路径(../web-inf/class/当然也可以放到其它任何目录,只要该目录被包含到类路径中即可)中定位这个文件,并读入这个文件完成的配置。这个配置文件告诉Log4J以什么样的格式、把什么样的信息、输出到什么地方。

 

#   可设置级别:TRACE→DEBUG→INFO→WARNING→ERROR→FATAL→OFF  
#   高级别level会屏蔽低级别level。  
#   debug:显示debug、info、error     
#   info:显示info、error     
  
#log4j.rootLogger=DEBUG,console,file  
#子类重新定义日志级别,logger的名字是日志类的权限类名  
#log4j.logger.org.linkinpark.commons.logtest.Log4jTest1=ERROR  
#子类重新定义日志级别,category的名字是日志类的包名,可以将category理解为Java的package。  
#log4j.category.org.linkinpark.commons.logtest1=ERROR,file,rolling_file,daily_rolling_file  
log4j.rootLogger=DEBUG,console,daily_rolling_file  
  
# 以下是rootLogger的配置,子类默认继承,但是子类重写下面配置=rootLogger+自己配置,我晕  
#输出到控制台     
log4j.appender.console=org.apache.log4j.ConsoleAppender    
#设置输出样式     
log4j.appender.console.layout=org.apache.log4j.PatternLayout   
#日志输出信息格式为  
log4j.appender.console.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n   
#DEBUG以上级别输出,Threshold,入口,临界值  
#log4j.appender.console.Threshold=DEBUG  
#日志编码方式  
#log4j.appender.console.Encoding=UTF-8  
#是否立即输出  
#log4j.appender.console.ImmediateFlush=true  
#使用System.error作为输出  
#log4j.appender.console.Target=System.error  
  
#输出到文件(这里默认为追加方式)     
log4j.appender.file=org.apache.log4j.FileAppender   
#输出文件位置  
log4j.appender.file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/log4j.log  
#是否在原日志基础上追加输出日志。true,默认,追加。false,清掉原来日志重新添加  
log4j.appender.file.Append=true  
#样式为TTCCLayout     
#log4j.appender.file.layout=org.apache.log4j.TTCCLayout  
#样式为HTMLLayout  
log4j.appender.file.layout=org.apache.log4j.HTMLLayout  
log4j.appender.file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/log4j.html  
#log4j.appender.file.layout=org.apache.log4j.PatternLayout  
#log4j.appender.file.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n    
  
#按大小滚动文件(这里默认为追加方式)     
log4j.appender.rolling_file=org.apache.log4j.RollingFileAppender   
#输出文件位置  
log4j.appender.rolling_file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/rolling_log4j.log  
log4j.appender.rolling_file.Append=true  
#文件达到最大值自动更名  
log4j.appender.rolling_file.MaxFileSize=1KB  
#最多备份100个文件  
log4j.appender.rolling_file.MaxBackupIndex=100  
log4j.appender.rolling_file.layout=org.apache.log4j.PatternLayout  
log4j.appender.rolling_file.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n  
  
#按日期滚动文件  
log4j.appender.daily_rolling_file=org.apache.log4j.DailyRollingFileAppender   
#输出文件位置  
log4j.appender.daily_rolling_file.File=/Users/LinkinPark/WorkSpace/linkin-log-test/log/daily_rolling_log4j.log  
#文件滚动日期格式  
#每天:.YYYY-MM-dd(默认)  
#每星期:.YYYY-ww  
#每月:.YYYY-MM  
#每隔半天:.YYYY-MM-dd-a  
#每小时:.YYYY-MM-dd-HH  
#每分钟:.YYYY-MM-dd-HH-mm  
#log4j.appender.daily_rolling_file.DatePattern=.yyyy-MM-dd  
log4j.appender.daily_rolling_file.DatePattern=.YYYY-MM-dd-HH-mm  
log4j.appender.daily_rolling_file.layout=org.apache.log4j.PatternLayout  
log4j.appender.daily_rolling_file.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}]-[%t-%5p]-[%C-%M(%L)]: %m%n  
  
#自定义样式     
#%c 输出所属的类目,通常就是所在类的全名   
#%C 输出Logger所在类的名称,通常就是所在类的全名   
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},%d{ABSOLUTE},%d{DATE}  
#%F 输出所在类的类名称,只有类名。  
#%l 输出语句所在的行数,包括类名+方法名+文件名+行数  
#%L 输出语句所在的行数,只输出数字  
#%m 输出代码中指定的讯息,如log(message)中的message  
#%M 输出方法名  
#%p 输出日志级别,即DEBUG,INFO,WARN,ERROR,FATAL  
#%r 输出自应用启动到输出该log信息耗费的毫秒数  
#%t 输出产生该日志事件的线程名  
#%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”  
#%% 用来输出百分号“%”  
#log4j.appender.Linkin.layout.ConversionPattern=%n[%l%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M] %m    
#log4j.appender.Linkin.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[%C]-[%p] %m%n     
#log4j.appender.Linkin.layout.ConversionPattern = %d{ABSOLUTE} %5p %t %c{2}:%L - %m%n  

 

分享到:
评论

相关推荐

    Log4j的扩展

    Java开发中使用Log4j 来记录log非常的方便,但是出现问题时需要查询Log时是很痛的,因为Log4j只提供了将Log记录的文件的方法却没有将...特此扩展了Log4j 中的FileAppender ,让其可以按小时来记录Log。或者按天来记录。

    log4j实用配置扩展

    #### 四、log4j的核心组件 log4j的核心组件主要包括**Loggers(记录器)**、**Appenders(输出源)**和**Layouts(布局)**。 1. **Loggers (记录器)**:负责生成日志信息,并决定是否发送日志信息到Appenders。记录器...

    浅谈Log4j扩展

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输出地;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是...

    Log4j2简介及与Log4j效率对比

    4. **插件式架构**:Log4j2采用了插件式的软件架构,这使得框架易于扩展而无需修改其核心代码。这种设计遵循了“对修改封闭,对扩展开放”的原则,增强了框架的灵活性。 5. **简化配置**:Log4j2配置文件更加简洁易...

    Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效

    Log4j2作为Log4j的升级版本,它在性能、可配置性和可扩展性上有了显著提升,同时也修复了Log4j的一些已知问题。Fastjson则是阿里巴巴的一个开源项目,它提供了快速的JSON解析和生成性能,广泛应用于Java应用程序的...

    log4j-api-2.12.4.ja和log4j-core-2.12.4.jar

    总的来说,Log4j 2是Java开发中不可或缺的工具,它提供强大的日志记录能力并注重性能和可扩展性。在选择和使用特定版本时,应密切关注安全更新,确保及时修补任何潜在的安全风险,以保护应用程序和用户数据的安全。...

    log4j 扩展多配置文件共存

    本文将深入探讨如何在Log4j中扩展多配置文件以实现共存,同时也会涉及到一些源码分析和实用工具的使用。 首先,Log4j的配置文件通常以`.properties`或`.xml`格式存在,用于定义日志的级别、输出目的地、布局格式等...

    log4j-api-2.17.1.jar和log4j-core-2.17.1.jar

    总的来说,log4j-api-2.17.1.jar和log4j-core-2.17.1.jar是Log4j2的核心组件,它们共同构建了一个强大且可扩展的日志框架。开发者应熟悉这两个库的职责和交互方式,以便充分利用Log4j2的功能,同时确保系统的安全性...

    log4j-API-最新稳定版本log4j-1.2.17

    10. **可扩展性**:Log4j API允许开发者通过插件机制轻松添加新的appender、filter和layout。 总的来说,Log4j API为Java开发者提供了一个强大而灵活的日志解决方案,通过其丰富的功能和可定制性,能够适应各种项目...

    Log4j2学习log4j2.xml配置模板

    Log4j2 配置模板学习笔记 Log4j2 是 Java 语言中一种流行的日志记录工具,它提供了灵活的日志记录管理功能。...*可扩展性强:Log4j2 提供了非常强的可扩展性,可以根据需要添加新的 appender 和配置。

    Log4j扩展的一个按天滚动的appender类,同时支持动态日志

    标题提到的是一个针对`Log4j`的扩展,名为`DayRollingFileAppender`,它是一个按天滚动的日志Appender,同时也支持动态日志生成。这个Appender允许日志文件按照日期进行分割,避免单个日志文件过大导致的管理困难。 ...

    log4j示例项目

    这个“log4j示例项目”旨在帮助开发者理解和使用Log4j,通过该项目,我们可以深入学习Log4j的配置、使用方法以及其在实际开发中的应用。 **1. Log4j的组成部分** Log4j主要包括三个核心组件:Logger(日志器)、...

    log4j.jar包,和log4j.properties配置文件下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中插入日志语句,以便跟踪程序的运行情况、调试错误、监控性能等。这个框架由Apache软件基金会开发,是许多Java项目的首选日志解决方案,因为它具有...

    logging-log4j2-log4j-2.15.0-rc2.zip

    《深入理解Log4j 2.15.0-rc2:日志处理的关键技术解析》 Log4j,作为Java领域广泛使用的日志记录框架,一直以来都是开发者们的重要工具。这次我们关注的是其最新版本——logging-log4j2-log4j-2.15.0-rc2。这个版本...

    log4j + slf4j-api + slf4j-log4j12

    总的来说,`log4j`、`SLF4J`和`slf4j-log4j12`的结合,为Java应用程序提供了一种高效、可扩展且灵活的日志处理方案。这种组合允许开发者专注于编写业务代码,而不必担心具体日志实现的细节,同时也方便了日志框架的...

    日志版本-log4j2版本jar

    Log4j2不仅提升了性能,还增强了可配置性和可扩展性。它使用XML、JSON、YAML或Properties等多种格式的配置文件,`log4j2.xml`就是其中的一种,用于定义日志级别(DEBUG、INFO、WARN、ERROR、FATAL)、输出目的地...

    log4j.1.2.17

    《深入理解Log4j:基于1.2.17版本》 在软件开发过程中,日志记录是一项至关重要的任务,它能够帮助开发者在程序出现问题时迅速定位错误,同时也能记录系统运行状态,便于后期分析与优化。Log4j,作为Java世界中最...

    The Complete Log4j Manual

    手册还可能涵盖了Log4j的扩展和定制开发,说明如何根据项目需求对Log4j进行二次开发,以实现更强大的日志管理功能。 10. 为什么使用Log4j Log4j之所以受到广泛使用,是因为其具有灵活性、配置简单、扩展性强等...

Global site tag (gtag.js) - Google Analytics