log4j config

!-----------------------------------------------------------------------------!  
  !                                                     PATTERN   FORMATS   GLOSSARY                                                       !  
  !-----------------------------------------------------------------------------!  
  !   %n   -   newline                                                                                                                                 !  
  !   %m   -   your   log   message                                                                                                               !  
  !   %p   -   message   priority   (FATAL,   ERROR,   WARN,   INFO,   DEBUG   or   custom)                       !  
  !   %r   -   millisecs   since   program   started   running                                                                 !  
  !   %%   -   percent   sign   in   output                                                                                                   !  
  !                                                                                                                                                           !  
  !-----------------------SOME   MORE   CLUTTER   IN   YOUR   LOG-------------------------!  
  !   %c   -   name   of   your   category   (logger),   %c{2}   will   outputs   last   two   components   !  
  !   %t   -   name   of   current   thread                                                                                                   !  
  !   %x   -   Nested   Diagnostic   Context   (NDC)   (you   supply   it!)                                               !  
  !                                                                                                                                                           !  
  !-------------------------SLOW   PERFORMANCE   FORMATS----------------------------!  
  !   %d   -   date   and   time,   also   %d{ISO8601},   %d{DATE},   %d{ABSOLUTE},                               !  
  !                 %d{HH:mm:ss,SSS},   %d{dd   MMM   yyyy   HH:mm:ss,SSS}   and   so   on                           !  
  !   %l   -   Shortcut   for   %F%L%C%M                                                                                                     !  
  !   %F   -   Java   source   file   name                                                                                                     !  
  !   %L   -   Java   source   line   number                                                                                                 !  
  !   %C   -   Java   class   name,   %C{1}   will   output   the   last   one   component                             !  
  !   %M   -   Java   method   name                                                                                                               !  
  !                                                                                                                                                           !  
  !------------------------------FORMAT   MODIFIERS-------------------------------!  
  !   %-any_letter_above   -   Left-justify   in   min.   width   (default   is   right-justify)     !  
  !   %20any_letter_above   -   20   char.   min.   width   (pad   with   spaces   if   reqd.)                 !  
  !   %.30any_letter_above   -   30   char.   max.   width   (truncate   beginning   if   reqd.)         !  
  !   %-10.10r   -   Example.     Left-justify   time   elapsed   within   10-wide   field.                 !  
  !                             Truncate   from   beginning   if   wider   than   10   characters.                       !  
  !-----------------------------------------------------------------------------!   
   

 

 

 

 

 

  • log4j配置文件基本含义说明
log4j.properties配置文件讲解如下:
# Set root logger level to DEBUG and its only appender to A1
#log4j中有五级logger
#FATAL 0
#ERROR 3
#WARN 4
#INFO 6
#DEBUG 7

配置根Logger,其语法为:
#log4j.rootLogger = [ level ] , appenderName, appenderName, …
log4j.rootLogger=INFO, A1 ,R
#这一句设置以为着所有的log都输出
#如果为log4j.rootLogger=WARN, 则意味着只有WARN,ERROR,FATAL
#被输出,DEBUG,INFO将被屏蔽掉.
# A1 is set to be a ConsoleAppender.
#log4j中Appender有几层如控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等
#ConsoleAppender输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 使用的输出布局,其中log4j提供4种布局. org.apache.log4j.HTMLLayout(以HTML表格形式布局)
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#灵活定义输出格式 具体查看log4j javadoc org.apache.log4j.PatternLayout
#d 时间 ....
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#R 输出到文件 RollingFileAppender的扩展,可以提供一种日志的备份功能。
log4j.appender.R=org.apache.log4j.RollingFileAppender
#日志文件的名称
log4j.appender.R.File=log4j.log
#日志文件的大小
log4j.appender.R.MaxFileSize=100KB
# 保存一个备份文件
log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.TTCCLayout
#log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n


配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, ...

level 是日志记录的优先级
appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。

配置日志信息输出目的地Appender,其语法为

log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
...
log4j.appender.appenderName.option = valueN

Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

配置日志信息的格式(布局),其语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
....
log4j.appender.appenderName.layout.option = valueN

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

  • 常用log4j配置

一般可以采用两种方式,.properties和.xml,下面举两个简单的例子:
一、log4j.properties
### 设置org.zblog域对应的级别INFO,DEBUG,WARN,ERROR和输出地A1,A2 ##
log4j.category.org.zblog=ERROR,A1
log4j.category.org.zblog=INFO,A2
log4j.appender.A1=org.apache.log4j.ConsoleAppender
### 设置输出地A1,为ConsoleAppender(控制台) ##
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
### 设置A1的输出布局格式PatterLayout,(可以灵活地指定布局模式)##
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
### 配置日志输出的格式##
log4j.appender.A2=org.apache.log4j.RollingFileAppender
### 设置输出地A2到文件(文件大小到达指定尺寸的时候产生一个新的文件)##
log4j.appender.A2.File=E:/study/log4j/zhuwei.html
### 文件位置##
log4j.appender.A2.MaxFileSize=500KB
### 文件大小##
log4j.appender.A2.MaxBackupIndex=1
log4j.appender.A2.layout=org.apache.log4j.HTMLLayout
##指定采用html方式输出
二、log4j.xml
<?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="E:/study/log4j/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="E:/study/log4j/zhuwei.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>
三、配置文件加载方法:
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class Log4jApp {
   public static void main(String[] args) {
       DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加载.xml文件
       //PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加载.properties文件
       Logger log=Logger.getLogger("org.zblog.test");
       log.info("测试");
   }
}
四、项目使用log4j
在web 应用中,可以将配置文件的加载放在一个单独的servlet中,并在web.xml中配置该servlet在应用启动时候加载。对于在多人项目中,可以给每一个人设置一个输出通道,这样在每个人在构建Logger时,用自己的域名称,让调试信息输出到自己的log文件中。
五、常用输出格式
# -X号:X信息输出时左对齐;
# %p:日志信息级别
# %d{}:日志信息产生时间
# %c:日志信息所在地(类名)
# %m:产生的日志具体信息
# %n:输出日志信息换行

 

 

 

获取logger
Logger.getRootLogger()  获取根logger
Logger.getLogger(String name)获取子logger
Logger.getLogger(Class clazz)或
Logger.getLogger(clazz.getName())

设置日志级别(.setLevel(int,Exception))
Level.ALL打开所有日志
Level.DEBUG 用于调试
Level.INFO 用于运行过程
Level.WARN 用于潜在的错误
Level.ERROR 用于错误事件
Level.FATAL 用于严重错误时间
Level.OFF 关闭所有日志

输出端Appender(.addAppender(Appender).setAdditivity(boolean additive)是否覆盖)
org.apache.log4j.ConsoleAppender  输出到控制台
 targer:
  ConsoleAppender.SYSTEM_OUT(Default)
  ConsoleAppender.SYSTEM_ERR
 public ConsoleAppender(Layout)
 public ConsoleAppender(Layout,String targer)
org.apache.log4j.FileAppender   输出到文件
 public FileAppender(Layout,String fileName)
 public FileAppender(Layout,String fileName,boolean append)是否覆盖
org.apache.log4j.DailyRollingFileAppender 输出到文件,每天一个新文件
org.apache.log4j.RollingFileAppender  输出到文件,自动新增改名
 public RollingFileAppender(Layout,String fileName)
 void setMaxBackupIndex(int index) 设置日志文件最大备份数
 void setMaximumFileSize(long size) 设置日志文件最大尺寸
org.apache.log4j.WriterAppender  流格式输出到任意地方
org.apache.log4j.JDBCAppender  输出到数据库

日志格式化(Layout)
%c   类全名
%d   时间
%f   类名
%l   位置
%m   信息
%n   换行
%p   级别
%r   耗时
%t   线程名

public PatternLayout() 使用默认设置DEFAULT_CONVERSION_PATTERN 只打印信息
public PatternLayout(String)使用自定义的pattern构造一个PatternLayout
void setConversionPattern(String)  设置日志格式
HTMLLayout
SimpleLayout


5.
1.BasicConfigurator.configure()
 PatternLayout p = new PatternLayout("%p [%t] %c (%F:%L) - %m%n");  
 ConsoleAppender a = new ConsoleAppender(p,ConsoleAppender.SYSTEM_OUT); 
 root.addAppender(a);         
 rootLogger.setLevel(Level.DEBUG);       
2.PropertyConfigurator.configure("/help/example.properties")
  String resource = "/help/example.properties";
  URL configFileResource = Log4J.class.getResource(resource);
  PropertyConfigurator.configure(configFileResource);
3.DOMConfigurator.configure("/help/example.xml")
xml declaration and dtd
|
log4j:configuration
|
+-- appender (name, class)
| |
| +-- param (name, value)
| +-- layout (class)
| |
| +-- param (name, value)
+-- logger (name, additivity)
| |
| +-- level (class, value)
| | |
| | +-- param (name, value)
| +-- appender-ref (ref)
+-- root
|
+-- param (name, class)
+-- level
| |
| +-- param (name, value)
+-- appender-ref (ref)


0.log4j.properties模板
log4j.rootLogger=info,CONSOLE,RFILE,FILE,DB      设置级别和三个输出端
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender     
log4j.appender.CONSOLE.Target=System.out        控制台类型
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout    
log4j.appender.CONSOLE.layout.ConversionPattern= %4p [%t] (%F:%L) - %m%n 

log4j.appender.FILE=org.apache.log4j.FileAppender     
log4j.appender.FILE.File=/help/my.properties       目标文件
log4j.appender.FILE.Append=false        是否追加
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout     布局模式
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %c:%L - %m%n   格式化布局

log4j.appender.RFILE=org.apache.log4j.RollingFileAppender     
log4j.appender.RFILE.File=/help/my.properties       目标文件
log4j.appender.RFILE.MaxFileSize=1KB        最大长度
log4j.appender.RFILE.MaxBackupIndex=3       最多备份
log4j.appender.RFILE.layout=org.apache.log4j.PatternLayout     布局模式
log4j.appender.RFILE.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}:%p %c:%L - %m%n   格式化布局

log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender     
log4j.appender.DB.URL=jdbc:oracle:thin:@127.0.0.1:1521:mumu     URL
log4j.appender.DB.driver=oracle.jdbc.driver.OracleDriver     驱动
log4j.appender.DB.user=liulibo         用户名
log4j.appender.DB.password=liulibo        密码
log4j.appender.DB.layout=org.apache.log4j.PatternLayout     布局模式
log4j.appender.DB.layout.ConversionPattern=insert into log4j(createdate,thread,level_,class,message) values(/'%d/',/'%t/',/'%-5p/',/'%c/',/'%m/')

create table log4j(createdate varchar2(32),thread varchar2(32),level_ varchar2(32),class varchar2(32),message varchar2(32));
 
0.XML模板
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration>
       
 <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n"/>
  </layout>
 </appender>
 
 <appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender">
     <param name="Append" value="false"/>
     <param name="MaxFileSize" value="1KB"/>
     <param name="File" value="dom/my.log"/>
     <param name="MaxBackupIndex" value="3"/>
     <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="%d{yyyy-MM-dd hh:mm:ss}:%p %t %c - %m%n"/>
     </layout>
 </appender>
 
 <appender name="JDBCAppender" class="org.apache.log4j.jdbc.JDBCAppender">
     <param name="URL" value="jdbc:oracle:thin:@127.0.0.1:1521:mumu"/>
     <param name="user" value="liulibo"/>
     <param name="password" value="liulibo"/>
     <param name="driver" value="oracle.jdbc.driver.OracleDriver"/>
     <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="insert into log4j(createdate,thread,level_,class,message) values(/'%d/',/'%t/',/'%-5p/',/'%c/',/'%m/')"/>
     </layout>
 </appender>
 
 <root>
  <priority value ="debug" />
  <appender-ref ref="ConsoleAppender"/>
  <appender-ref ref="RollingFileAppender"/>
  <appender-ref ref="JDBCAppender"/>
 </root>

</log4j:configuration>

应用
 web.xml
  <context-param>
   <param-name>props</param-name>
   <param-value>/WEB-INF/log4j.properties</param-value>
  </context-param>
 
  <listener>
   <listener-class>cart.listener.SCServletContextListener</listener-class>
  </listener>
 初始化方法中添加
 private void initLog4j(ServletContext context){
   String prefix = context.getRealPath("/");
   System.out.println("prefix:"+prefix);
   String props = context.getInitParameter("props");
  if(props != null) {
   PropertyConfigurator.configure(prefix+props);
  }
  Logger logger = Logger.getLogger(SCServletContextListener.class); 
   }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值