今天,要做一个很简单的事,那就是项目上线了,需要把各个子功能的日志分开,方便系统出线问题后,日志的查看,用过log4j的童鞋们都知道,这是很简单的,配置一个appender,再配置一个category,指向这个appender即可.

  第一步:我先确定现在项目用的什么日志框架

  在部署完的jboss里看了一下,哇,真够丰富的,${jboss_home}\server\default\lib 里有:log4j.jar, ${jboss_home}\server\default\deploy\${project}.war\WEB-INF\lib 里有:self4j-api-1,5,2.jar ; self4j-log4j12-1.0.jar ; slf4j-simple-1.5.2.jar;log4j-1.2.14.jar,common-logging-1.1.1.jar.看来应用里sef4j+log4j 和jcl+log4j两套都支持,好吧,那只好去代码里看一下,是用的那套方案,代码中:

import org.apache.commons.logging.LogFactory;

  使用的jcl方案.

  这里想了一个问题,jboss的类加载顺序是怎么样的,从上面可以看出:分别在${jboss_home}\server\default\lib  和${jboss_home}\server\default\deploy\${project}.war\WEB-INF\lib  目录里,都有log4j包,其实上面没仔细说,在${jboss_home}\server\default\deploy\${project}.war\WEB-INF\lib 都有两个版本的log4j包,那实际在应用时是用那个jar包啊,好吧,先完成工作,做完才仔细分析,另外,吐糟一个这个项目的jar管理混乱问题.

  第二步:JCL的实现方式:log4j? simpleLog?

好吧,姐在这里还是费了点时间,姐知道,Jakarta Commons Logging(JCL) 和self4j 一样,都是只提供一个接口,具体实现类可以配置,如果这部分的知识不懂,去看:日志管理(一):slf4j原理简单介绍 ,那么当前工程选用的那个实现方案呢?姐也知道,是在commons-logging.properties配置的,然后,去工程下找这个文件,在jboss的目录下找,都没找到,后来看了一篇文章,姐才知道,原来JCL也进步了,只要在class下找到log4j 的配置文件,就可以自动匹配,不用commons-logging.properties也可以的,self4j也是这样的,看来,技术都是朝省儿的方向发展啊!对了,JCL具体是怎么匹配的,还有个顺序问题,可以参照:http://www.blogjava.net/liuwentao253/archive/2006/08/03/61517.html.

  总之,通过这步,我确定了JCL下面使用的是log4j实用的.

  

   第三步:修改jboss中日志配置文件,实现要求的功能

   ${JBOSS_HOME}/server/default/conf/log4j.xml 修改为我想要的内容,如下是修改完的一部分:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><!-- ===================================================================== -->
<!--                                                                       -->
<!--  Log4j Configuration                                                  -->
<!--                                                                       -->
<!-- ===================================================================== --><!--| For more configuration infromation and examples see the Jakarta Log4j| owebsite: http://jakarta.apache.org/log4j--><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"><!-- ================================= --><!-- Preserve messages in a local file --><!-- ================================= --><!-- A time/date based rolling appender --><appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender"><errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/><param name="File" value="${jboss.server.home.dir}/log/server.log"/><param name="Append" value="true"/><param name="Threshold" value="INFO"/><param name="DatePattern" value="'.'yyyy-MM-dd"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d %-5p [%c] %m%n"/></layout></appender><appender name="ArticleTransfer" class="org.jboss.logging.appender.DailyRollingFileAppender"><errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/><param name="File" value="${jboss.server.home.dir}/log/transfer.log"/><param name="Append" value="true"/><param name="Threshold" value="INFO"/><param name="DatePattern" value="'.'yyyy-MM-dd"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>      </layout></appender><appender name="Evidence" class="org.jboss.logging.appender.DailyRollingFileAppender"><errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/><param name="File" value="${jboss.server.home.dir}/log/evidence.log"/><param name="Append" value="true"/><param name="Threshold" value="INFO"/><param name="DatePattern" value="'.'yyyy-MM-dd"/><layout class="org.apache.log4j.PatternLayout">         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/></layout></appender><!-- ============================== --><!-- Append messages to the console --><!-- ============================== --><appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"><errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/><param name="Target" value="System.out"/><param name="Threshold" value="INFO"/><layout class="org.apache.log4j.PatternLayout"><param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/></layout></appender><!-- ================ --><!-- Limit categories --><!-- ================ --><!-- Limit the org.apache category to INFO as its DEBUG is verbose --><category name="org.apache"><priority value="INFO"/></category><!-- Limit the org.jgroups category to WARN as its INFO is verbose --><category name="org.jgroups"><priority value="WARN"/></category><!-- Limit jboss axis to INFO as its DEBUG is even more verbose --><category name="org.jboss.axis"><priority value="INFO"/></category><!-- Limit the JSR77 categories --><category name="org.jboss.management"><priority value="INFO"/></category><!-- ======================= --><!-- Setup the Root category --><!-- ======================= --><category name="cn.ipms.spider.evidence"><priority value="INFO" /><appender-ref ref="Evidence"/></category><category name="cn.ipms.supervise.article.service.impl.AlarmArticleTransferServiceImpl"><priority value="INFO" /><appender-ref ref="ArticleTransfer"/></category><root><appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/></root></log4j:configuration>

   修改的时候,要注意log4j:configuration各个子元素的顺序,具体可见:http://qingfeng825.iteye.com/admin/blogs/1816587,ok,功能实现.

日志管理:(三)配置_JCL+Log4J中遇到的问题相关推荐

  1. Java学习day051 记录日志(基本日志、高级日志、修改日志管理器配置、本地化、处理器、过滤器、格式化器、日志记录说明)

    使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识. day051   记录日志(基本日志.高级日志.修改日志管理器配置.本地化.处理器.过滤器.格式化器 ...

  2. java日志——修改日志管理器配置+日志本地化

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java日志--修改日志管理器配置+日志本地化 的相关知识: [1]修改日志管理器配置 1.1 ...

  3. Spring MVC 中使用AOP 进行统一日志管理--XML配置实现

    1.介绍 上一篇博客写了使用AOP进行统一日志管理的注解版实现,今天写一下使用XML配置实现版本,与上篇不同的是上次我们记录的Controller层日志,这次我们记录的是Service层的日志.使用的 ...

  4. 日志管理、配置日志服务器 、配置时间同步

    日志管理程序:rsyslog 程序包:rsyslog ,端口默认514,加密日志,端口是 6514 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/.conf  库文件: ...

  5. tp5记录用户的操作日志_【干货】日志管理与分析(四)日志管理规程

    接<日志管理与分析(三)--对日志系统的攻击>,如果你的企业没有认真地对待日志,那么就可以说明你的企业对IT可审核性并不重视,这也就是日志记录成为一种完善的依从性技术,许多法规和法律以及最 ...

  6. Node.js学习笔记(九)#log4js日志管理

    目录 一.log4js简介 二.log4js使用[图片] 1.安装 2.导入 3.配置 4.添加实例 5.输出日志 三.log4js日志等级 四.log4js配置信息 1.appenders 输出源 ...

  7. 码农技术炒股之路——配置管理器、日志管理器

    配置管理器和日志管理器是项目中最为独立的模块.我们可以很方便将其剥离出来供其他Python工程使用.文件的重点将是介绍Python单例和logging模块的使用.(转载请指明出于breaksoftwa ...

  8. SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)

    2019独角兽企业重金招聘Python工程师标准>>> 首先我们为什么需要做日志管理,在现实的上线中我们经常会遇到系统出现异常或者问题.这个时候就马上打开CRT或者SSH连上服务器拿 ...

  9. 应用程序日志管理工具

    应用程序负责机构中的大量终端用户活动(从日常任务到复杂的业务逻辑相关活动).应用程序日志记录所有这些任务,并且能够全面记录机构内发生的情况.如果要了解应用程序使用情况.性能或安全性,那么日志管理是最佳 ...

最新文章

  1. android studio 导入库提示失败的处理方法以及androidstudio 清理缓存的方法
  2. C - Multiplication Table CodeForces - 448D
  3. 数据库事务原理及并发、死锁
  4. Python sort()和sorted()
  5. 22款终端生产力工具,效率飞起!
  6. aptitude安装出现依赖_oeasy 教您玩转linux 之 010210 应用管理 aptitude
  7. 强烈推荐一位大佬,知名银行风控分析师,学习是一辈子的事!
  8. 移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植
  9. python系统学习1-程序设计的基本方法
  10. 工作实践 之 Google Guava 工具集的使用 ,提高效率
  11. mysql转达梦7_从mysql换成达梦7后,查询语句报错,这个是druid的问题吗
  12. python垃圾回收价格表_主流的垃圾回收机制都有哪些?
  13. 总结|数学建模的收获
  14. Vue:vue过渡、动画特效以及借助animate.css实现动画效果
  15. VMware-NAT连接网络
  16. 国庆蓝牙耳机最强选购攻略,2020不容错过的精品蓝牙耳机
  17. VTK学习笔记(二十八)ExtractEnclosedPoints python示例
  18. Arduino UNO驱动DS1307数字实时时钟RTC
  19. 新年,未知的开始---Created by 思贤泪自潸
  20. C# 中通过CancellationTokenSource实现对超时任务的取消

热门文章

  1. case when then else 详解
  2. 关于CS1061报错(XX不包含XXX的定义,并且找不到类型为XX的第一个参.....)的一种可能的解决的办法...
  3. zeroclipboard浏览器复制插件使用记录
  4. lightoj 1300 边双联通分量+交叉染色求奇圈
  5. Kafka是如何实现高吞吐率的
  6. UOJ #579. 树上的颜色
  7. 自动化测试学习之路--java String、StringBuilder
  8. 阿里云的云虚拟主机安装dede提示数据库连接失败的解决办法
  9. 数据库 chapter 12 数据库管理系统
  10. php-URL方法下载远程图片