首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

Log4j的简略配置

2013-08-21 
Log4j的简单配置? ? ? ? ?公司的项目需要用到log4j对日志的管理,把内容简单说明一下。(java环境)? ? ? ? ?l

Log4j的简单配置

? ? ? ? ?公司的项目需要用到log4j对日志的管理,把内容简单说明一下。(java环境)

? ? ? ? ?log4j的配置管理形式有两种:一种是.?properties格式的文件,另一种是.xml格式的文件。

? ? ? ? ?

#可以设置级别:debug>info>error  #debug:显示debug、info、error  #info:显示info、error  #error:只error  log4j.rootLogger=debug,appender1  #log4j.rootLogger=info,appender1  #log4j.rootLogger=error,appender1    #输出到控制台  log4j.appender.appender1=org.apache.log4j.ConsoleAppender  #样式为TTCCLayout  log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

?

通过配置文件可知,我们需要配置3个方面的内容:

1、根目录(级别和目的地);

2、目的地(控制台、文件等等);

3、输出样式。 ?

Logger - 日志写出器,供程序员输出日志信息?

Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去?

ConsoleAppender - 目的地为控制台的Appender?

FileAppender - 目的地为文件的Appender?

RollingFileAppender - 目的地为大小受限的文件的Appender?

Layout - 日志格式化器,用来把程序员的logging request格式化成字符串?

PatternLayout - 用指定的pattern格式化logging request的Layout

?

? ? ? ? 其中,Log4j提供的appender有以下几种:

  org.apache.log4j.ConsoleAppender(控制台),

  org.apache.log4j.FileAppender(文件),

  org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

  org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),

   ? ?org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

?

?

1、level的级别(此级别可以自定义,系统默认提供了以下级别):

debug//调试信息

info//一般信息

warn//警告信息

error//错误信息

fatal//致命错误信息

? ?上面列出的就是所谓log4j的输出级别,log4j建议只使用4个级别,它们从上到下分别为ERROR、WARN、INFO、DEBUG,假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。?

?

2、log4j.appender.appenderName = fully.qualified.name.of.appender.class。log4j提供了以下几种常用的输出目的地:

? ?org.apache.log4j.ConsoleAppender,将日志信息输出到控制台

? ?org.apache.log4j.FileAppender,将日志信息输出到一个文件

? ?org.apache.log4j.DailyRollingFileAppender,将日志信息输出到一个,并且每天输出到一个新的日志文件

? ?org.apache.log4j.RollingFileAppender,将日志信息输出到一个文件,通过指定文件的的尺寸,当文件大小到达指定尺寸的时候会自动把文件改名,如名为example.log的文件会改名为 example.log.1,同时产生一个新的example.log文件。如果新的文件再次达到指定尺寸,又会自动把文件改名为 example.log.2,同时产生一个example.log文件。依此类推,直到example.log. MaxBackupIndex, MaxBackupIndex的值可在配置文件中定义。

org.apache.log4j.WriterAppender,将日志信息以流格式发送到任意指定的地方。

org.apache.log4j.jdbc.JDBCAppender,通过JDBC把日志信息输出到数据库中。

3、Log4j提供了一下几种布局:

org.apache.log4j.HTMLLayout,以HTML表格形式布局

org.apache.log4j.PatternLayout,可以灵活地指定布局模式

org.apache.log4j.SimpleLayout,包含日志信息的级别和信息字符串

?

定义一个PatternLayout布局的语句为:

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

4、log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1} - %m%n

ConversionPattern参数的格式含义

格式名 含义

%c 输出日志信息所属的类的全名

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28

%f 输出日志信息所属的类的类名

%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行

%m 输出代码中指定的信息,如log(message)中的message

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

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推?

%r 输出自应用启动到输出该日志信息所耗费的毫秒数

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

?针对log4j xml的配置:
<?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">        <!-- ========================== 自定义输出格式说明================================ -->      <!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->      <!-- #%r 输出自应用启动到输出该log信息耗费的毫秒数  -->      <!-- #%c 输出所属的类目,通常就是所在类的全名 -->      <!-- #%t 输出产生该日志事件的线程名 -->      <!-- #%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” -->      <!-- #%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921  -->      <!-- #%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)  -->      <!-- ========================================================================== -->            <!-- ========================== 输出方式说明================================ -->      <!-- Log4j提供的appender有以下几种:  -->      <!-- org.apache.log4j.ConsoleAppender(控制台),  -->      <!-- org.apache.log4j.FileAppender(文件),  -->      <!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->      <!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),  -->      <!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)   -->  <!-- ========================================================================== -->  <!-- 输出到日志文件  -->      <appender name="filelog_appender"          value="log/testlog4jxml_all.log" />          <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->          <param name="Append" value="true" />          <!-- 设置文件大小 -->          <param name="MaxFileSize" value="1MB" />          <!-- 设置文件备份 -->          <param name="MaxBackupIndex" value="10000" />          <!-- 设置输出文件项目和格式 -->          <layout value="%d{yyyy-MM-dd HH:mm:ss} %-5p (%c:%L)- %m%n" />          </layout>      </appender>    <!-- 输出到日志文件 每天一个日志  -->      <appender name="filelog_daily" value="log/daily.log" />             <param name="DatePattern" value="'daily.'yyyy-MM-dd'.log'" />             <layout value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] (%c:%L) - %m%n" />             </layout>         </appender>     <!-- 输出到控制台中 -->      <appender name="console"                  value="%d{yyyy-MM-dd HH:mm:ss} %-5p: %m%n" />              <!-- "%-5p: [%t] [%c{3}.%M(%L)] | %m%n" -->          </layout>      </appender>    <appender name="EMAIL_QQ" value="INFO"/>          <param name="BufferSize" value="128" />          <param name="SMTPHost" value="smtp.qq.com" />          <param name="SMTPUsername" value="cjjvictory" />          <param name="SMTPPassword" value="***" />          <param name="From" value="cjjvictory@qq.com" />          <param name="To" value="cjjvictory@gmail.com" />          <param name="Subject" value="测试邮件发送" />          <param name="LocationInfo" value="true" />          <param name="SMTPDebug" value="true" />          <layout value="[%d{ISO8601}] %-5p %c %m%n"/>          </layout>      </appender>    <!--- 异步测试,当日志达到缓存区大小时候执行所包的appender -->      <appender name="ASYNC_test" value="10"/>          <appender-ref ref="EMAIL_QQ"/>     </appender>     <!-- 设置包限制输出的通道 -->      <category name="org.cjj" additivity="false">  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<!-- 日志输出级别,起码可以有5个级别,可以扩展自己的级别,邮件发送必须是ERROR级别不好用,所以最后自己扩展一个邮件发送级别 -->          <level value="ERROR" />          <appender-ref ref="filelog_daily" />          <appender-ref ref="daily_appender" />          <appender-ref ref="console" />          <appender-ref ref="ASYNC_test" />   </category>    </log4j:configuration>  
?

?

?

?

热点排行