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. Android开发工具之adt-bundle-windows

    adt-bundle-windows是非常久之前的android开发工具.是集成了ADT版本号的eclipse,可是里面并没有下载SDK.这个须要自己单独下载,这个工具适合刚開始学习的人使用. 由于刚 ...

  2. Event Serializers官网剖析(博主推荐)

    不多说,直接上干货! Flume Sources官网剖析(博主推荐) Flume Channels官网剖析(博主推荐) Flume Channel Selectors官网剖析(博主推荐) Flume ...

  3. Android 继承framelayout,实现ScrollView 和 HorizontalScrollView 的效果

    有些项目,需要让控件或者布局进行水平和垂直同时能拖拽,当然,ScrollView 和 HorizontalScrollView 的结合写法是一种写法.但是,这么写用户体验效果不佳,会有迟钝感,因此推荐 ...

  4. 15、python学习手册之:python语句、赋值、表达式和打印

    1.语句的另一个特殊规则是用一对括号把语句括起来就可以:括号().方括号[].字典的大括号{}.任何括在这些符号里的程序代码都可横跨好几行. 2.括号是可以包含一切的,因为任何表达式都可以包含在内,只 ...

  5. 项目太大tomcat启动不起来

    双击server,Open launch configuration Arguments VM arguments增加参数: -Xms512m -Xmx1024m -Xss4m -XX:PermSiz ...

  6. 微软云 azure 数据迁移之oracle11g dataguard

    背景,将本地的oracle数据迁移到微软云azure云上面的oracleserver. 1.复制本地的rman备份集到微软云azure的oracleserver上 scp -r -P56922 201 ...

  7. Android实践之ScrollView中滑动冲突处理

    转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/52130923 1. 前言 在Android开发中,假设是一些简单的布局.都非常easy ...

  8. 使用javascript实现图片上下切换效果并且实现顺序循环播放

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  9. Javascript和jquery事件-鼠标移入移出事件

    javascript使用mouseover和mouseout,只在css中支持hover jquery支持mouseover和mouseout,封装了mouseenter.mouseleave事件函数 ...

  10. Java Timer TimerTask Example(java Timer的例子)

    Java java.util.Timer is a utility class that can be used to schedule a thread to be executed at cert ...