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
- Dubbo -- 系统学习 笔记 -- 配置参考手册
Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...
- Filebeat配置参考手册
Filebeat的配置参考 指定要运行的模块 前提: 在运行Filebeat模块之前,需要安装并配置Elastic堆栈: 安装Ingest Node GeoIP和User Agent插件.这些插件需要 ...
- Java代码中获取配置文件(config.properties)中内容的两种方法
方法千千万,本人暂时只总结了两种方法. (1)config.properties中的内容如图 在applicationContext.xml中配置 <!-- 引入配置文件 --> < ...
- Nginx配置同一个域名同时支持http与https两种方式访问
Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen 80;listen 443 ssl;ssl on;server_name 域名;in ...
- reportConfig.xml两种数据源连接的配置方式
在reportConfig.xml配置文件中,我们提供了两种数据源连接的配置方式,分别如下: 1.jndi数据源配置(即:在dataSource中配置) 此配置适用于在j2ee的服务器中配置了j ...
- windows下配置tomcat服务器的jvm内存大小的两种方式
难得遇到一次java堆内存溢出(心里想着,终于可以来一次jvm性能优化了$$) 先看下报错信息, java.lang.OutOfMemoryError: GC overhead limit excee ...
- app.config 配置多项 配置集合 自定义配置(4) 自动增加配置项到配置文件的两种方法
一,按照xml文件处理: 配置文件如下图(最后的图片). 自动写入configSections和configSections的实例 1.自动写入configSections Configuration ...
- dubbo 官方参考手册~备案(防止哪天阿里一生气把dubbo给删除了)
首页 || 下载 || 用户指南 || 开发者指南 || 管理员指南 || 培训文档 || 常见问题解答 || 发布记录 || 发展路线 || 社区 E ...
- Microsoft Visual C++ 6.0预处理器参考手册
返回总目录 Microsoft Visual C++ 6.0 预处理器参考手册 目录引言........................................................ ...
随机推荐
- shell实例浅谈之三产生随机数七种方法
一.问题 Shell下有时须要使用随机数,在此总结产生随机数的方法.计算机产生的的仅仅是"伪随机数".不会产生绝对的随机数(是一种理想随机数).伪随机数在大量重现时也并不一定保持唯 ...
- HTML高级标签之表格标签
前面学习了一下HTML的经常使用标签, 今天開始高级标签之路! 一.表格标签 1.作用: 创建一张表格 2.各属性作用: <table cellspacing="0" cel ...
- bitmap-setBounds方法参数研究
对于如下的代码,一直有点不明白它具体每一步操作的影响.今天就稍微研究下.代码如下 xml代码 <RelativeLayout xmlns:android="http://schemas ...
- AVCaptureSession音频视频采集
// // AudioVideoCaptureViewController.m // live // // Created by lujunjie on 2016/10/31. // Copyrigh ...
- 最新GitHub新手使用教程(Windows Git从安装到使用)——详细图解
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一.叙述 1.Git简介 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本 ...
- 修改IIS7并发连接数目限制
转自原文 修改IIS7并发连接数目限制 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools > Ad ...
- C#调用oracle存储过程自定义表类型
http://blog.csdn.net/studyzy/article/details/11524527
- iOS_05_iOS设备发展史
ios设备发展史 IPhone一代 * 2007年发布. * 支持电子邮件.移动电话.短信.网络浏览等. * 采取触摸键盘 * 3.5英寸,480 x 320像素. * 后置摄像投200万像素. IP ...
- vue-cli3使用vue-svg-loader加载svg
vue-svg-loader Documentation - FAQ webpack loader that lets you use SVG files as Vue components Micr ...
- 可视化格式模型(visual formatting model)
原文 简书原文:https://www.jianshu.com/p/7632f16ff555 大纲 1.认识可视化模型 2.可视化模型的内容 3.可视化模型的影响因素 1.认识可视化模型 盒子模型是C ...