日志管理:(三)配置_JCL+Log4J中遇到的问题
今天,要做一个很简单的事,那就是项目上线了,需要把各个子功能的日志分开,方便系统出线问题后,日志的查看,用过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中遇到的问题相关推荐
- Java学习day051 记录日志(基本日志、高级日志、修改日志管理器配置、本地化、处理器、过滤器、格式化器、日志记录说明)
使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识. day051 记录日志(基本日志.高级日志.修改日志管理器配置.本地化.处理器.过滤器.格式化器 ...
- java日志——修改日志管理器配置+日志本地化
[0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java日志--修改日志管理器配置+日志本地化 的相关知识: [1]修改日志管理器配置 1.1 ...
- Spring MVC 中使用AOP 进行统一日志管理--XML配置实现
1.介绍 上一篇博客写了使用AOP进行统一日志管理的注解版实现,今天写一下使用XML配置实现版本,与上篇不同的是上次我们记录的Controller层日志,这次我们记录的是Service层的日志.使用的 ...
- 日志管理、配置日志服务器 、配置时间同步
日志管理程序:rsyslog 程序包:rsyslog ,端口默认514,加密日志,端口是 6514 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/.conf 库文件: ...
- tp5记录用户的操作日志_【干货】日志管理与分析(四)日志管理规程
接<日志管理与分析(三)--对日志系统的攻击>,如果你的企业没有认真地对待日志,那么就可以说明你的企业对IT可审核性并不重视,这也就是日志记录成为一种完善的依从性技术,许多法规和法律以及最 ...
- Node.js学习笔记(九)#log4js日志管理
目录 一.log4js简介 二.log4js使用[图片] 1.安装 2.导入 3.配置 4.添加实例 5.输出日志 三.log4js日志等级 四.log4js配置信息 1.appenders 输出源 ...
- 码农技术炒股之路——配置管理器、日志管理器
配置管理器和日志管理器是项目中最为独立的模块.我们可以很方便将其剥离出来供其他Python工程使用.文件的重点将是介绍Python单例和logging模块的使用.(转载请指明出于breaksoftwa ...
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
2019独角兽企业重金招聘Python工程师标准>>> 首先我们为什么需要做日志管理,在现实的上线中我们经常会遇到系统出现异常或者问题.这个时候就马上打开CRT或者SSH连上服务器拿 ...
- 应用程序日志管理工具
应用程序负责机构中的大量终端用户活动(从日常任务到复杂的业务逻辑相关活动).应用程序日志记录所有这些任务,并且能够全面记录机构内发生的情况.如果要了解应用程序使用情况.性能或安全性,那么日志管理是最佳 ...
最新文章
- android studio 导入库提示失败的处理方法以及androidstudio 清理缓存的方法
- C - Multiplication Table CodeForces - 448D
- 数据库事务原理及并发、死锁
- Python sort()和sorted()
- 22款终端生产力工具,效率飞起!
- aptitude安装出现依赖_oeasy 教您玩转linux 之 010210 应用管理 aptitude
- 强烈推荐一位大佬,知名银行风控分析师,学习是一辈子的事!
- 移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植
- python系统学习1-程序设计的基本方法
- 工作实践 之 Google Guava 工具集的使用 ,提高效率
- mysql转达梦7_从mysql换成达梦7后,查询语句报错,这个是druid的问题吗
- python垃圾回收价格表_主流的垃圾回收机制都有哪些?
- 总结|数学建模的收获
- Vue:vue过渡、动画特效以及借助animate.css实现动画效果
- VMware-NAT连接网络
- 国庆蓝牙耳机最强选购攻略,2020不容错过的精品蓝牙耳机
- VTK学习笔记(二十八)ExtractEnclosedPoints python示例
- Arduino UNO驱动DS1307数字实时时钟RTC
- 新年,未知的开始---Created by 思贤泪自潸
- C# 中通过CancellationTokenSource实现对超时任务的取消
热门文章
- case when then else 详解
- 关于CS1061报错(XX不包含XXX的定义,并且找不到类型为XX的第一个参.....)的一种可能的解决的办法...
- zeroclipboard浏览器复制插件使用记录
- lightoj 1300 边双联通分量+交叉染色求奇圈
- Kafka是如何实现高吞吐率的
- UOJ #579. 树上的颜色
- 自动化测试学习之路--java String、StringBuilder
- 阿里云的云虚拟主机安装dede提示数据库连接失败的解决办法
- 数据库 chapter 12 数据库管理系统
- php-URL方法下载远程图片