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. kibana中信息分类查询显示的方法

    1.什么是kibana? kibana是ELK(elasticsearch+logstash+kibana)中的K,它是一个可灵活的分析和可视化平台,主要是显示数据以及根据这些数据绘出一些可视化图表, ...

  2. 认识一下JavaScript

    1.什么是JavaScript? JavaScript简称“JS”,应用于HTML和WEB,广泛应用于服务器.PC.笔记本等设备. JavaScript 是 Web 的编程语言. 所有现代的 HTML ...

  3. Redis的高级应用-安全性和主从复制

    Redis的服务器命令和键值命令(String,Hash,List,Set,Zset)相对简单,只需查看文档即可. 文档地址: http://www.runoob.com/redis/redis-tu ...

  4. C# List 复制克隆副本

    [C#技术] C# List 复制克隆副本数字人 发表于:2012-8-28 18:02:49废话不多说,看代码: 方法一: List<string> t = new List<st ...

  5. mycat 之datanode datahost writehost readhost 区别(转)

    <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> &l ...

  6. Session丢失原因与解决方案

    win2003 server下的IIS6默认设置下对每个运行在默认应用池中的工作者进程都会经过20多个小时后自动回收该进程,   造成保存在该进程中的session丢失. 因为Session,Appl ...

  7. Project Euler 501 Eight Divisors (数论)

    题目链接: https://projecteuler.net/problem=501 题意: \(f(n)\) be the count of numbers not exceeding \(n\) ...

  8. JS学习笔记 - fgm练习 - 多按钮控制同个div属性

    总结: 1. 注意body里的结构安排,全部装在大div,避免多次设置不同部分居中. 2. 一排按钮居中:装在大div里,text-align: center; 3. 把相同的部分封装成函数,即 同个 ...

  9. GO语言学习(五)Go 语言基础语法

    Go 标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号.如以下 GO 语句由 6 个标记组成: fmt.Println("Hello, World!") ...

  10. C# is 和 as的用法

    try            {                if (sender is Button)                {                    Button dd ...