2009-04-24 24 views
1

我有一個Log4j奇怪的問題。我們使用log4j.xml在Weblogic 10上進行部署。這工作正常。我們想出一種方法來使得我們可以在這個平臺上開發和部署上的Weblogic 10log4j與Tomcat6

我已想出如何使log4j.properies工作和Tomcat 6與使用巨力日誌機制額外的JAR文件的方式運行Tomcat 6在Tomcat 6中。不幸的是,我的log4j.xml(與Weblogic一起使用)無法與Tomcat 6一起使用。所以我不得不使用log4j.properties

我一直未能弄清楚如何在log4j.properties中指出應用程序類層次結構。 所以我的問題是如何以下log4j.xml項並在轉換爲log4j.properties

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

<appender name="vccashib" class="org.apache.log4j.DailyRollingFileAppender"> 
    <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
    <param name="File" value="vccashib_10.log"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d{ISO8601} %t %-5p %c - %m%n"/> 
    </layout> 
    </appender> 

    <logger name="org.hibernate"> 
    <level value="DEBUG"/> 
    <appender-ref ref="vccashib" /> 
    </logger> 

</log4j:configuration> 

因此,讓我們說,我寫的捕獲記錄在我的com.abc.xyz層次結構類的記錄器。我如何在log4j.properties中表明? (我已經處理了諸如appender類型,DatePattern,ConversionPattern,FileName,佈局等其他值)

請注意,我發給您唯一的問題特定代碼。

或者,如果你知道如何使log4j.xml那是我和Tomcat 6戰歸檔(巨力罐子到位,並與log4j.properties正常工作)的部分答案,請讓我知道

請幫助。

蘇哈斯

回答

2

我不完全清楚你的問題。我在tomcat 6上部署了log4j,沒有任何問題(你可以發佈你的xml配置中遇到的具體問題嗎?)。我不確定你的意思是什麼「我已經想出瞭如何使用Tomcat 6中的其他jar來使用log4j.properies以及使用JULI日誌記錄機制的其他jar」)。

  • 是在適當位置的配置?
  • 是你的一些瓶子從全球tomcat ($TOMCAT_HOME/lib)目錄加載 ?如果是這樣, 庫可能會從全局目錄 尋找 配置,而不是從您的web應用程序。

如果你只是在談論如何在log4j配置管理單獨的類層次結構,它是這樣的:

log4j.rootCategory=INFO,stdout 

#e.g. not interested in most stripes or spring warnings 
log4j.logger.net.sourceforge.stripes=ERROR 
log4j.logger.org.springframework=ERROR 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%-d %-5p [%t] %c{1} %3x - 
%m%n 

#This creates the separate log "Foo" at DEBUG level. Everythign within 
#the "com.foo" package will 
# get logged here 
log4j.category.com.foo=DEBUG,Foo 
log4j.appender.Foo=org.apache.log4j.RollingFileAppender 
log4j.appender.Foo.layout=org.apache.log4j.PatternLayout 
log4j.appender.Foo.layout.ConversionPattern=%-d %-5p [%t] %c{1} %3x - %m%n 
log4j.appender.DetailLogFile.File=foo.log 
#this is the important line - if this isn't here the stuff in 
#com.foo package will show up in both logs. 
log4j.additivity.com.foo=false 
0

我們正在使用的tomcat6與log4j。我們遵循following manual在tomcat中安裝log4j - 它比舊版本(4.1-5.5)更復雜。 我相信你應該把你的log4j.xml放在你的戰爭中的WEB-INF/classes目錄下。

另外一個方法是使用這個Spring框架 - 見Log4jConfigListener's API

0

在我看來,有與創作甚至log4j的日誌沒有問題。xml

我確實使用http://tomcat.apache.org/tomcat-6.0-doc/logging.html來建立日誌記錄機制。

有趣的是,日誌是在Tomcat 6的bin目錄下創建的!它是與當前的工作目錄,並在我的情況下,它似乎是bin目錄按照一些卡塔利娜設置

0

根據http://boncey.org/2006_7_25_log4j_with_xml_configuration

  1. export CATALINA_OPTS="-Dlog4j.configuration=log4j.xml"(我想迫使它尋求.xml而不是.properties
  2. log4j.xml文件到WEB-INF/classes

我有一個類似的問題,這爲我工作。下面說明將幫助您建立Web應用程序的log4j的

0

幾個簡單的步驟來進行初始化:

1)複製log4j.xml(TOMCAT_HOME)/CATALINA_HOME/conf目錄。我的應用程序的log4j.xml看上去象下面這樣:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > 
<log4j:configuration> 
<appender name="stdout" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ABSOLUTE} 
     %5p %c{1}:%L -Preetam %m%n"/> 

     </layout> 
    </appender> 
     <root> 
     <!-- <priority value="info"></priority> --> 
       <priority value="debug"></priority> 
      <appender-ref ref="stdout"/> 
     </root> 
</log4j:configuration> 

2)停止Tomcat

tomcat6 stop /var/tmp/tomcat-20120622.log (use your application specific stop.sh script) 

3)在(TOMCAT_HOME)/CATALINA_HOME/conf目錄中,你將有tomcat6.conf文件。按照下面的描述編輯文件。如果tomcat6.conf中沒有CATALINA_OPTS,請創建一個。

# Settings for the CATALINA_OPTS to pick web application's log4j.xml from the specified location 
CATALINA_OPTS="${CATALINA_OPTS}-Dlog4j.debug - Dlog4j.configuration=file:${CATALINA_HOME}/conf/log4j.xml" 

4)以您的應用程序特定startup.sh腳本啓動tomcat。

5)就是這樣,你都完成了。檢查日誌以查看tomcat是否正在讀取您在tomcat6.conf中指定的log4j.xml

tail -f /var/tmp/tomcat-20120622.log

Jun 22, 2012 3:28:35 PM org.apache.catalina.startup.HostConfig deployDirectory 
INFO: Deploying web application directory examples 
Jun 22, 2012 3:28:35 PM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-8080 
Jun 22, 2012 3:28:35 PM org.apache.jk.common.ChannelSocket init 
INFO: JK: ajp13 listening on /0.0.0.0:8009 
Jun 22, 2012 3:28:35 PM org.apache.jk.server.JkMain start 
INFO: Jk running ID=0 time=0/12 config=null 
Jun 22, 2012 3:28:35 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 547 ms 
log4j: Using URL [file:/opt/otccalypso/guiadmd01/tomcat6/conf/log4j.xml] for automatic log4j configuration. 
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator 
log4j: System property is :null 
log4j: Standard DocumentBuilderFactory search succeded. 
log4j: DocumentBuilderFactory is: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl 
log4j: debug attribute= "null". 
log4j: Ignoring debug attribute. 
log4j: Threshold ="null". 
log4j: Level value for root is [debug]. 
log4j: root level set to DEBUG 
log4j: Class name: [org.apache.log4j.ConsoleAppender] 
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout" 
log4j: Setting property [conversionPattern] to [%d{ABSOLUTE}  %5p %c{1}:%L -Preetam %m%n]. 
log4j: Adding appender named [stdout] to category [root]. 
+0

重點注意的日誌:使用URL [文件:/opt/otccalypso/guiadmd01/tomcat6/conf/log4j.xml]自動log4j的信息:在547毫秒 log4j的服務器啓動組態。 – Preetam 2012-06-22 13:45:50