一般的应用都会记录日志,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配置说明及样例的更多相关文章

  1. jbpm入门样例

    1.      jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储.    參考 http://www.jbos ...

  2. Eureka 的 Application Client client的执行演示样例

            上篇以一个 demo 演示样例介绍了 Eureka 的 Application Service 客户端角色.今天我们继续了解 Eureka 的 Application Client 客 ...

  3. SNF开发平台WinForm-审核流使用方法样例

    一.效果如下: 二.如何实现 1.程序的数据表设计规范,参考<09.SNF-C#编程规范V1.5.docx>文件. 2.程序操作程序 2.1.在程序页面拖拽控件 2.2.程序的Load事件 ...

  4. Kafka在Linux上安装部署及样例测试

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

  5. Eureka 的 Application Service client的注冊以及执行演示样例

            Eureka 服务器架起来了(关于架设步骤參考博客<Linux 下 Eureka 服务器的部署>),如今怎样把我们要负载均衡的服务器(也就是从 Application Cl ...

  6. MyBatis对数据库的增删改查操作,简单演示样例

    之前一直有用Hibernate进行开发.近期公司在使用Mybatis.依据网上的演示样例,做了一个简单的Demo,以便日后复习 使用XMl方式映射sql语句 整体结构例如以下图 watermark/2 ...

  7. JAVA各种OOM代码样例及解决方法

    周末了,觉得我还有很多作业没有写,针对目前大家对OOM的类型不太熟悉,那么我们来总结一下各种OOM出现的情况以及解决方法. 我们把各种OOM的情况列出来,然后逐一进行代码编写复现和提供解决方法. 1. ...

  8. 2020JAVA最新应对各种OOM代码样例及解决办法

    引言 作者:黄青石 链接:https://www.cnblogs.com/huangqingshi/p/13336648.html?utm_source=tuicool&utm_medium= ...

  9. ShardingSphere 知识库更新 | 官方样例集助你快速上手

    Apache ShardingSphere 作为 Apache 顶级项目,是数据库领域最受欢迎的开源项目之一.经过 5 年多的发展,ShardingSphere 已获得超 14K Stars 的关注, ...

随机推荐

  1. 使用SignalR为FineUI/Webform打造消息总线

    第一次写博客,语言组织能力不好,请大家多多包涵! 效果图如下: 图片的右下角即为SignalR消息总线的消息框. 一.建立SignalR服务端 第一步:打开一个空的FineUI 4.5空项目文件,在空 ...

  2. iOS开发——高级技术&PassBook服务

    PassBook服务 Passbook是苹果推出的一个管理登机牌.会员卡.电影票.优惠券等信息的 工具.Passbook就像一个卡包,用于存放你的购物卡.积分卡.电影票.礼品卡等,而这些票据就是一个“ ...

  3. 理解与模拟一个简单servlet容器

    servlet接口 使用servlet编程需要实现或者继承实现了javax.servlet.Servlet接口的类,其中定义了5个签名方法: public void init(ServletConfi ...

  4. Leetcode-122 Best Time to Buy and Sell Stock II

    #122  Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the pric ...

  5. windows xp/7命令提示符强制结束指定进程

    开始----“运行 ”输入cmd ,然后在命令提示符下输入tasklist,出现如下列表: Image Name                     PID Session Name        ...

  6. ES5 数组方法reduce

    reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值. 参数 callback 执行数组中每个值的函数,包含四个参数 previou ...

  7. iis 故障导致网站无法访问

    服务器使用两三个月突然,昨天无法访问,重启后正常,第二次发生这样的事情了,打开  C:\WINDOWS\system32\LogFiles\HTTPERR  下的   httperr1.txt 201 ...

  8. 奇怪吸引子---ShimizuMorioka

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  9. 尝试制作了一个Panorama

    照片拍的不太好, 效果如下(浏览器需要支持WebGL), 您可以用鼠标拖动浏览:   //

  10. IOS 7 UI 的适配

    官方问题答案:https://developer.apple.com/library/ios/qa/qa1797/_index.html 官方建议: https://developer.apple.c ...