Log4j配置说明及样例
一般的应用都会记录日志,Java圈里面用得最多就属log4j了,比较规范一点就是使用log4j.xml进行配置Log输出。这里就比较有疑问,多数情况是使用log4j.properties文件呐,前面也说了,规范一点就用log4j.xml进行配置,他们之间究竟有哪些区别呢,在百度知道里面有人这么回答,个人觉得还是有点道理的,广大博友可以自由备注。
区别不大,只是在项目中配置的文件形式不一样。功能上没区别。 推荐用xml 方式。
有web 项目中log4.properties不能使用Filter拦截日志级别,而log4j.xml可以,这点感觉log4j.xml要强大些
log4j.xml插入数据库的时候sql写在layout属性的ConversionPattern参数中,而log4.properties则有单独的sql属性接受配置文件中的sql语句
虽然没有人点赞,但是有点道理哦。有这么一个场景:某一个模块中,我想把很重要的业务日志分离出来,保存在单独的一个文件中,不和其他普通的日志打在一起,后续用来做统计也比较方便(我厂大部分应用都是将日志统统地打印在一起,然后通过一个日志收集平台收集到MQ、HDFS中去做统计分析,然后统计分析的时候又要对这些日志做过滤只关心特殊的业务日志,个人认为这样很不好,不仅给后续统计分析带来复杂度,同时也给浪费大量收集平台的网络、IO等资源。)这里给出一个log4j.xml的配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration>
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd/MM/yy HH:mm:ss:sss}] %t %5p %c{2}: %m%n"/>
</layout>
</appender> <!--自定义appender-->
<appender name="logmodel1" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="logs/model1.log"/> <!--日志路径-->
<param name="Append" value="false"/> <!--是否追加-->
<param name="MaxBackupIndex" value="3"/> <!--最大roll的文件数-->
<param name="MaxFileSize" value="10240"/> <!--文件size上限-->
<layout class="org.apache.log4j.PatternLayout"> <!--日志输出格式-->
<param name="ConversionPattern" value="[%d{dd/MM/yy HH:mm:ss:sss}] %5p %c: %m%n"/>
</layout>
</appender> <!--自定义logger,additivity: 是否遵循缺省的继承机制-->
<logger name="model1" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="logmodel1"/>
</logger>
<root>
<level value="INFO"/>
<appender-ref ref="CONSOLE"/>
</root>
</log4j:configuration>
简单的模块样例代码:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class Log4JTest {
/**
* root logger
*/
private static final Logger LOG = LoggerFactory.getLogger(Log4JTest.class); /**
* 自定义model1 logger
*/
private static final Logger MODEL_LOG1 = LoggerFactory.getLogger("model1"); public static void printLog(int i) {
LOG.info("log something....." + i);
} public static void printModelLog1(int i) {
MODEL_LOG1.info("log info model1 something....." + i);
MODEL_LOG1.debug("log debug model1 something....." + i);
} public static void main(String[] args) throws InterruptedException {
for (int i=10; i < 20; i++) {
printLog(i);
printModelLog1(i);
Thread.sleep(1000);
}
} }
然后,普通的日志就直接输出在Console上了,比较核心的printModelLog1中通过MODEL_LOG1将日志输出到logs/model1.log文件中。具体log4j支持哪些appender以及ConversionPattern网上一搜一大把,不再赘述。
Log4j配置说明及样例的更多相关文章
- jbpm入门样例
1. jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储. 參考 http://www.jbos ...
- Eureka 的 Application Client client的执行演示样例
上篇以一个 demo 演示样例介绍了 Eureka 的 Application Service 客户端角色.今天我们继续了解 Eureka 的 Application Client 客 ...
- SNF开发平台WinForm-审核流使用方法样例
一.效果如下: 二.如何实现 1.程序的数据表设计规范,参考<09.SNF-C#编程规范V1.5.docx>文件. 2.程序操作程序 2.1.在程序页面拖拽控件 2.2.程序的Load事件 ...
- Kafka在Linux上安装部署及样例测试
Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...
- Eureka 的 Application Service client的注冊以及执行演示样例
Eureka 服务器架起来了(关于架设步骤參考博客<Linux 下 Eureka 服务器的部署>),如今怎样把我们要负载均衡的服务器(也就是从 Application Cl ...
- MyBatis对数据库的增删改查操作,简单演示样例
之前一直有用Hibernate进行开发.近期公司在使用Mybatis.依据网上的演示样例,做了一个简单的Demo,以便日后复习 使用XMl方式映射sql语句 整体结构例如以下图 watermark/2 ...
- JAVA各种OOM代码样例及解决方法
周末了,觉得我还有很多作业没有写,针对目前大家对OOM的类型不太熟悉,那么我们来总结一下各种OOM出现的情况以及解决方法. 我们把各种OOM的情况列出来,然后逐一进行代码编写复现和提供解决方法. 1. ...
- 2020JAVA最新应对各种OOM代码样例及解决办法
引言 作者:黄青石 链接:https://www.cnblogs.com/huangqingshi/p/13336648.html?utm_source=tuicool&utm_medium= ...
- ShardingSphere 知识库更新 | 官方样例集助你快速上手
Apache ShardingSphere 作为 Apache 顶级项目,是数据库领域最受欢迎的开源项目之一.经过 5 年多的发展,ShardingSphere 已获得超 14K Stars 的关注, ...
随机推荐
- [ACM_模拟] ZJUT OJ 1139 七龙珠 (追及类问题,s-t图像,模拟)
Description 话说孙悟饭与小林正在与刚造访地球的赛亚人贝吉塔交战,因为连贝吉塔的手下纳巴的实力也远在他俩之上,由于差距悬殊,小林不得不设脱离战场,去寻找正在修炼中的悟空求救,而赛亚人一伙 ...
- [游戏学习29] Win32 图像处理1
>_<:bmp格式的简单处理: >_<:变暗RGB同时除以某一值 >_<:出现轮廓的是通道相减 >_<:最后一个是颜色提取 >_ ...
- atitit. java queue 队列体系and自定义基于数据库的队列总结o7t
atitit. java queue 队列体系and自定义基于数据库的队列总结o7t 1. 阻塞队列和非阻塞队列 1 2. java.util.Queue接口, 1 3. ConcurrentLink ...
- iOS---性能优化
最近采用Instruments 来分析整个应用程序的性能.发现很多有意思的点,以及性能优化和一些分析性能消耗的技巧.小结如下. Instruments使用技巧 关于Instruments官方有一个很有 ...
- plsql无法连接64位oracle数据库的解决方法(图文解说)
oracle11g下载页面:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html,找到适 ...
- Django项目深入理解
python应用松耦合比方说,考虑有一个以前写的视图函数,这个函数显示当前日期和时间.如果我们想把它的URL 从原来的 /time/ 改变到/currenttime/ ,我们只需要快速的修改一下URL ...
- Java thread jargon
In Java thread topic, the task to be executed and the thread to drive the task are two concepts shou ...
- bzoj 1858: [Scoi2010]序列操作
1858: [Scoi2010]序列操作 Time Limit: 10 Sec Memory Limit: 64 MB 线段树,对于每个区间需要分别维护左右和中间的1和0连续个数,并在op=4时特殊 ...
- android: permission和uses-permission
首先,先看一下permission定义的格式: <permission android:description="string resource" android:icon= ...
- VAG DMA protocol
Func 0a - RAM Read 0A Func 0a - ROM Read 0A Func 0a - EEPROM Read FD Func 0C xx - EEPROM Write 0A Fu ...