日志管理:(三)配置_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中遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 日志管理:(二)og4j.xml警告lo
- 下一篇: int i 引出JVM故事