log4j是Java Web开发中,最常用的日志组件之一。网上关于log4j的配置满天飞,我主要是从网上学习的配置。之前的很多年,主要使用log4j.properties这种格式。后来,项目中boss使用了log4j.xml这种配置。
   关于xml配置,之前也用过,主要觉得麻烦,而且还要手动配置listener,所以基本不用。
   和boss交流了下,发现xml格式的配置,语法更全面。我主要发现了2种“高端用途” :
1.业务日志与系统日志相分离。(这个比较有价值)
2.配置过滤器。 (参考资料里有配置介绍)

关于配置语法,网上有资料,有兴趣的可以查看下方的参考资料或者网上搜。不想贴没有原创性的用法示例。

log4j.properties :最常用最简单的配置,记录不同级别的日志到控制台、文件,并且每天一个日志文件

#log4j.rootLogger=OFF
log4j.rootLogger=debug,CONSOLE,D,I,E
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE 
###################
# Console Appender
###################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=debug
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout  
log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#Debug rootDailyRollingFile#####
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.D.Threshold=DEBUG
log4j.appender.D.layout=org.apache.log4j.PatternLayout  
log4j.appender.D.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.appender.D.file=C:/log4j/briefcms-debug
log4j.appender.DFile.DatePattern='-'yyyy-MM-dd'.log'
#Info
log4j.appender.I=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.I.Threshold=INFO
log4j.appender.I.layout=org.apache.log4j.PatternLayout  
log4j.appender.I.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.appender.I.file=C:/log4j/briefcms-info
log4j.appender.I.DatePattern='-'yyyy-MM-dd'.log'
#Error
log4j.appender.E=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.E.Threshold=ERROR
log4j.appender.E.layout=org.apache.log4j.PatternLayout  
log4j.appender.E.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.appender.E.file=C:/log4j/briefcms-error

log4j.appender.E.DatePattern='-'yyyy-MM-dd'.log'

log4j.xml:实现业务日志与系统日志相分离

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] %c{2\} - %X{loginUser} %X{userip} %m%n" />
</layout>
</appender>
<appender name="DEFAULT-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">    
<param name="File" value="C:/log4j/default.log" /><!-- 设置日志输出文件名 -->  
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />   
 <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->  
<param name="Append" value="true" />  
<param name="MaxBackupIndex" value="10" />  
<layout class="org.apache.log4j.PatternLayout">  
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] %c{2\} - %X{loginUser} %X{userip} %m%n" />  
</layout>  
</appender>
<appender name="BIZ-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">  
<param name="File" value="C:/log4j/biz.log" />   
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />   
<param name="Threshold" value="INFO" />  
<layout class="org.apache.log4j.PatternLayout">  
<param name="ConversionPattern"  value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] %c{2\} - %X{loginUser} %X{userip} %m%n" />  
</layout>   
</appender> 
<appender name="ERROR-APPENDER" class="org.apache.log4j.DailyRollingFileAppender">  
<param name="File" value="C:/log4j/error.log" />   
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />   
<param name="Threshold" value="ERROR" />  
<layout class="org.apache.log4j.PatternLayout">  
<param name="ConversionPattern"  value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] %c{2\} - %X{loginUser} %X{userip} %m%n" />  
</layout>   
</appender>
<!-- Application Loggers -->
<logger name="cn.fansunion" additivity="false">
<level value ="debug"/>   
<appender-ref ref="BIZ-APPENDER" />   
<appender-ref ref="ERROR-APPENDER" />
</logger>
<!-- Root Logger -->
<root>
<level value="debug" />
<appender-ref ref="DEFAULT-APPENDER"/>  
<appender-ref ref="ERROR-APPENDER"/>
</root>

</log4j:configuration>

参考资料:
http://blog.csdn.net/coolcoffee168/article/details/6368924
http://zhangxiang390.iteye.com/blog/258455
http://www.cnblogs.com/tqsummer/archive/2010/08/26/1809232.html

http://blog.csdn.net/jueshengtianya/article/details/8900427

原文首发:http://fansunion.cn/article/detail/554.html

log4j配置参考手册:log4j.properties和log4j.xml两种格式的更多相关文章

  1. Dubbo -- 系统学习 笔记 -- 配置参考手册

    Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...

  2. Filebeat配置参考手册

    Filebeat的配置参考 指定要运行的模块 前提: 在运行Filebeat模块之前,需要安装并配置Elastic堆栈: 安装Ingest Node GeoIP和User Agent插件.这些插件需要 ...

  3. Java代码中获取配置文件(config.properties)中内容的两种方法

    方法千千万,本人暂时只总结了两种方法. (1)config.properties中的内容如图 在applicationContext.xml中配置 <!-- 引入配置文件 --> < ...

  4. Nginx配置同一个域名同时支持http与https两种方式访问

    Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen 80;listen 443 ssl;ssl on;server_name 域名;in ...

  5. reportConfig.xml两种数据源连接的配置方式

     在reportConfig.xml配置文件中,我们提供了两种数据源连接的配置方式,分别如下: 1.jndi数据源配置(即:在dataSource中配置) 此配置适用于在j2ee的服务器中配置了j ...

  6. windows下配置tomcat服务器的jvm内存大小的两种方式

    难得遇到一次java堆内存溢出(心里想着,终于可以来一次jvm性能优化了$$) 先看下报错信息, java.lang.OutOfMemoryError: GC overhead limit excee ...

  7. app.config 配置多项 配置集合 自定义配置(4) 自动增加配置项到配置文件的两种方法

    一,按照xml文件处理: 配置文件如下图(最后的图片). 自动写入configSections和configSections的实例 1.自动写入configSections Configuration ...

  8. dubbo 官方参考手册~备案(防止哪天阿里一生气把dubbo给删除了)

          首页  ||  下载  ||  用户指南  ||  开发者指南  ||  管理员指南  ||  培训文档  ||  常见问题解答  ||  发布记录  ||  发展路线  ||  社区 E ...

  9. Microsoft Visual C++ 6.0预处理器参考手册

    返回总目录 Microsoft Visual C++ 6.0 预处理器参考手册 目录引言........................................................ ...

随机推荐

  1. ubuntu-安装中文拼音输入法

    一下内容转载自http://blog.chinaunix.net/uid-24410388-id-3501873.html 自己验证了可用.转载了,已留做日后使用 步骤: step1:安装ibus所需 ...

  2. @Import注解

    转自:https://blog.csdn.net/heyutao007/article/details/74994161 @Import注解就是之前xml配置中的import标签,可以用于依赖第三方包 ...

  3. 81.内存模式实现cgi查询

    创建全局的二级指针 char ** g_pp;//全局的二级指针 获取数据有多少行 //获取行数 int getimax() { ; FILE *pf = fopen(path, "r&qu ...

  4. mysql 语句优化心得

    排序导致性能较慢 优化策略:1.尽量不使用排序 2.只查有索引的结果然后 内连接查询 select  bizchance0_.*  from biz_chance bizchance0_, biz_b ...

  5. PatentTips - Adaptive algorithm for selecting a virtualization algorithm in virtual machine environments

    BACKGROUND A Virtual Machine (VM) is an efficient, isolated duplicate of a real computer system. Mor ...

  6. C#基础数据类型与字节数组(内存中的数据格式)相互转换(BitConverter 类)

      在某种通讯协议中(如 Modbus),可能需要把一些基本的数据类型内存中的表示形式转换成以字节数组的形式,方便传送.C/C++中可以利用指针等操作完成,但C#中没有指针,咋办呢?可以用BitCon ...

  7. POJ 2284 That Nice Euler Circuit (LA 3263 HDU 1665)

    http://poj.org/problem?id=2284 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&a ...

  8. IOS获取preferreces偏好设置plistname名称的方法

    //获取preferreces偏好设置plistname名称的方法1 -(NSArray*)loadSpecifiersFromPlistName:(NSString*)plistName targe ...

  9. window.print()打印网页(一)

    有时候需要将网页内容打印到纸上,最简单的一种方法是用window对象的print方法. window.print()默认打印当前网页的所有部分.(除了背景,默认打印都是白底黑字,如果有特别的设置 要另 ...

  10. es6三点运算符的用法

    扩展运算符( spread )是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1,2,3]); console.log(1,. ...