Log4J 最全配置说明 详解----perfect!

看了几个文档,还是这个最全面,最后附上自己的日记,早遇到这个文章就不需要整理笔记了 

1.   log4j 的配置文件 
Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件 lg4j.properties (键 = 值)。 

1.1. log4j configuration scripts in properties format 
lg4j.properties 文件作为作为常用的配置文件的方法如下: 

Ø         配置根 Logger 
Logger 负责处理日志记录的大部分操作。 
其语法为: 
log4j.rootLogger = [ level ] , appenderName, appenderName, … 
    其中, level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL 或者自定义的级别。 Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。 ALL: 打印所有的日志, OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。 

Ø         Appender 

配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。 
其语法为: 
log4j.appender.appenderName = fully.qualified.name.of.appender.class 
log4j.appender.appenderName.option1 = value1 
log4j.appender.appenderName.optionN = valueN 

其中, Log4j 提供的 appender 有以下几种: 
org.apache.log4j.ConsoleAppender (控制台), 
org.apache.log4j.FileAppender (文件), 
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件), 
org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB 设置文件大小,还可通过 log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。 
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方) 
例: 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
定义一个名为 stdout 的输出目的地, ConsoleAppender 为控制台。 

Ø         Layout 

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



Ø         格式化日志信息 
Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下: 
%m 输出代码中指定的消息 
%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL 
%r 输出自应用启动到输出该 log 信息耗费的毫秒数 
%c 输出所属的类目,通常就是所在类的全名 
%t 输出产生该日志事件的线程名 
%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n” 
%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 年 10 月 18 日 22 : 10 : 28 , 921 
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。 



log4j.propertie 示例文件: 

log4j.rootCategory=INFO, stdout,file 

###. 定义名为 stdout 的输出端的类型 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n 



###. 定义名为 file 的输出端的类型为每天产生一个日志文件。 
log4j.appender.file =org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.File=log.txt 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n 



###. 指定 com.neusoft 包下的所有类的等级为 DEBUG 。可以把 com.neusoft 改为自己项目所用的包名。 
log4j.logger.com.neusoft=DEBUG 

###. 如果项目中没有配置 EHCache ,则配置以下两句为 ERROR 。 
log4j.logger.com.opensymphony.oscache=ERROR 
log4j.logger.net.sf.navigator=ERROR 

### struts 配置 
log4j.logger.org.apache.commons=ERROR 

log4j.logger.org.apache.struts=WARN 

### displaytag 配置 
log4j.logger.org.displaytag=ERROR 

### .spring 配置 
log4j.logger.org.springframework=DEBUG 

### . ibatis 配置 
log4j.logger.com.ibatis.db=WARN 
### . hibernate 配置 

log4j.logger.org.hibernate=DEBUG 



log4j.logger.org.apache.velocity=FATAL 
log4j.logger.com.canoo.webtest=WARN 



1.2. log4j configuration scripts in XML format 
<?xml version="1.0" encoding="GB2312" ?> 

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

<appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender"> 

<!-- 设置通道 ID:org.zblog.all 和输出方式: org.apache.log4j.RollingFileAppender --> 

<param name="File" value="all.output.log" /> 

<!-- 设置 File 参数:日志输出文件名 --> 

<param name="Append" value="false" /> 

<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 --> 

   <param name="MaxBackupIndex" value="10" /> 

   <layout class="org.apache.log4j.PatternLayout"> 

       <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /> 

<!-- 设置输出文件项目和格式 --> 

   </layout> 

</appender> 

<appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender"> 

   <param name="File" value="output.log" /> 

   <param name="Append" value="true" /> 

   <param name="MaxFileSize" value="10240" /> 

<!-- 设置文件大小 --> 

   <param name="MaxBackupIndex" value="10" /> 

   <layout class="org.apache.log4j.PatternLayout"> 

   <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /> 

   </layout> 

</appender> 

<logger name="zcw.log"> 

<!-- 设置域名限制,即 zcw.log 域及以下的日志均输出到下面对应的通道中 --> 

   <level value="debug" /> 

<!-- 设置级别 --> 

   <appender-ref ref="org.zblog.zcw" /> 

<!-- 与前面的通道 id 相对应 --> 

</logger> 

<root> 

<!-- 设置接收所有输出的通道 --> 

   <appender-ref ref="org.zblog.all" /> 

<!-- 与前面的通道 id 相对应 --> 

</root> 

</log4j:configuration> 



2.   log4j in java 
2.1. commongs-logging+Log4j 
Ø         导入所有需的 commongs-logging 类: 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 



Ø         获取日志记录器 

在自己的类中定义一个 org.apache.commons.logging.Log 类的私有静态类成员: 
private final Log log = LogFactory.getLog(getClass()); 
LogFactory.getLog() 方法的参数使用的是当前类的 class 。 



Ø         输出日志信息 

使用 org.apache.commons.logging.Log 类的成员方法输出日志信息: 


if (log.isDebugEnabled()) { 

   log.debug("debug…"); 


if (log.isInfoEnabled()){ 
   log.info("Info…"); 

if (log.isWarnEnabled()){ 
   log.warn("warn …"); 

if (log.isErrorEnabled()){ 
   log.error("error …"); 


if (log.isFatalEnabled()){ 
   log.fatal("fatal …") 


2.2. 单独使用 Log4j 
Ø         获取日志记录器 

得到记录器使用 Log4j ,这个记录器将负责控制日志信息。其语法为: 

public static Logger getLogger( String name) 

通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。 Name 一般取本类的名字,比如: 

static Logger logger = Logger.getLogger (Test.class.getName () ) 



Ø         读取配置文件 

当获得了日志记录器之后,第二步将配置 Log4j 环境,其语法为: 

BasicConfigurator.configure () : 自动快速地使用缺省 Log4j 环境。 

PropertyConfigurator.configure(String configFilename) :读取使用 Java 的特性文件编写的配置文件。 

例: PropertyConfigurator.configure(".\\src\\log4j.properties"), 若将 log4j.properties 放在工程根目录下也可不写此句,程序会自动找到配置文件。 

DOMConfigurator.configure ( String filename ) :读取 XML 形式的配置文件。 



Ø         输出日志信息 

当上两个必要步骤执行完毕,就可轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下: 

Logger.debug ( Object message ) ; 

Logger.info ( Object message ) ; 

Logger.warn ( Object message ) ; 

Logger.error ( Object message ) ; 



log4j 范例程序 

下面将使用一个最简单的范例程序来进一步说明 log4j 的使用方法。程序代码如下: 



import org.apache.log4j.*; 

import org.apache.log4j.PropertyConfigurator; 
import org.apache.log4j.xml.DOMConfigurator; 

public class LogTest { 

static Logger logger = Logger.getLogger(LogTest.class.getName()); 

public static void main(String[] args) { 

PropertyConfigurator.configure ( “.\\src\log4j.properties”) ; 

//DOMConfigurator.configure(".\\src\log4j.xml");// 加载 .xml 文件 
logger.debug("Debug ..."); 

logger.info("Info ..."); 

logger.warn("Warn ..."); 

logger.error("Error ..."); 





3.   log4j in database 
3.1. 数据库配置 
Ø         导入所需的驱动包 

无论使用哪种数据库都需要将驱动包导入服务中。 

Ø         创建所需的表 

首先要保证你的数据库中有 log 表,并且保正字段的长度,否则写入日志时操作会失败 

数据字典说明: 

CREATE TABLE LOG ( 

        ID                 INTEGER NOT NULL PRIMARY KEY, 

        LOGDATE            DATE, 

        LOGTIME            TIME, 

        LOGTHREAD          VARCHAR(50), 

        LOGLEVEL           VARCHAR(50), 

        LOGCLASS           VARCHAR(50), 

        LOGLOGGER          VARCHAR(200), 

        LOGMESSAGE         VARCHAR(2000) 



GO 

3.2. log4j 配置文件 
## 配置数据库联接 

log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender 

log4j.appender.DATABASE.URL=jdbc:db2://127.0.0.1:50000/pbdb 

log4j.appender.DATABASE.driver=com.ibm.db2.jcc.DB2Driver 

log4j.appender.DATABASE.user=erpt1104 

log4j.appender.DATABASE.password=erpt1104 

log4j.appender.DATABASE.sql = INSERT INTO log (logDATE,logTIME,LOGThread,loglevel,logClass,logLogger,logMessage) values ('%d{yyyy-MM-dd}','%d{HH:mm:ss}','%t', '%p', '%c', '%l', '%m') 

log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout log4j.appender.DATABASE.layout.ConversionPattern = %d{yyyy MM dd HH:mm:ss,SSS} %-5p %t %c %m 



说明: 

%d 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyyy-MM-dd HH:mm:ss} ,输出类似: 2007-3-29 17:49:27 ,刚好适合插入 SQLServer ; 

%t 产生该日志事件的线程名; 

%p 日志的 log_level ,如 DEBUG 、 WARN 或者 INFO ; 

%c 输出所属的类目,通常就是所在类的全名,如“ iNotes.Default ”; 

%m 日志的内容; 

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。如 Test.main(Test.java:33) ; 

%n 输出一个回车换行符, Windows 平台为“ \r\n ”, Unix 平台为“ \n ” 

3.3. java 中调用 
import sun.jdbc.odbc.*; 

import java.sql.*; 



import org.apache.log4j.Category; 

import org.apache.log4j.Level; 

import org.apache.log4j.Logger; 

import org.apache.log4j.PropertyConfigurator; 

import org.apache.log4j.jdbc.*; 



static Logger logger = Logger.getLogger(Test.class.getName ()); 

PropertyConfigurator.configure ( "log.properties" ) ; 

logger.info ( "test" ); 



运行项目,你就会看到执行了 sql 语句,数据库中便插入相关数据,如需对日志进行分析整理,这就不是 log4j 的事情了。 



4.   最后说明: 
Doc 文档可以从其网站上下载: 

http://logging.apache.org/log4j/docs/api/index.html 

http://logging.apache.org/log4j/docs/documentation.html 

  
关于 eclipse 的 log4j的插件log4e  可以去他的官方网站上下载:http://log4e.jayefem.de/index.php/Download 




1. log4j 配置文件解读 
log4j 支持两种配置方式 xml和properties 
log4j 三个主要组件 Loggers Appenders Layouts 对应日志类别、日志的输出、日志输出格式 

Logger: 
debug info warn error fatal五个级别 
example: 
root4j.rootLogger=info 

Appender: 
org.apache.log4j.ConsoleAppender  org.apache.log4j.FileAppender  org.apache.log4j.DailyRollingFileAppender 
org.apache.log4j.RollingFileAppender  org.apache.log4j.WriteAppender--日志信息以流的形式发送到任何指定的地方 
format: 
log4j.appender.appenderName=fully.qualified.name.of.appender.class 
log4j.appender.appenderName.option1=value1 ….. 
example:  ConsoleAppender FileAppender DBAppender 
### direct log messages to stdout ### 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
### direct log messages to file mip.log ### 
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.File=../webapps/SgccMsgCenter/log/SgccMsgCenter.log 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n 
### direct messages to db ### 
log4j.appender.db=com.ibm.eip.finance.log.DBAppender 
log4j.appender.db.bufferSize=1 

Layout: org.apache.log4j.HTMLLayout/PatternLayout/SimpleLayout/TTCCLayout 
pattern的一些配置参数 
%m 输出代码中指定的消息 
%p 输出优先级 即debug info warn error 
%r 输出自应用启动到输出该log信息耗费的毫秒数 
%c 输出所属的类目 通常是类所在的全名 
%t 输出产生该日志时间的线程名 
%n 输出一个回车换行符 win \r\n  unix \n 
%d 输出日志点的时间格式 
%l 输出日志事件的发生位置 

关于Log4j的配置一般是在配置文件进行,当然在代码中也可以进行代码级别的配置 
Logger logger=Logger.getLogger("logger name"); 
logger.setLevel(Level.INFO); 
logger.warn("warn information"); 
// 配置的读取 
BasicConfigurator.configure();  //使用默认配置 
PropertyConfigurator.configure(String configureFileName);  // property文件配置 
or DOMConfigurator.configure(String fileName);   // XML配置 


Log4j 中 struts hibernate的日志配置 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值