2009-04-24 3 views
1

У меня есть своеобразная проблема с Log4j. Мы развертываем на Weblogic 10, используя log4j.xml. Это прекрасно работает. Мы разработали способ запуска Tomcat 6 таким образом, чтобы мы могли разрабатывать эту платформу и развертывать на Weblogic 10.log4j с Tomcat6

Я выяснил, как сделать log4j.properies работу с Tomcat 6 с дополнительными JArs, использующими механизм регистрации JULI в 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? (Я позаботился о других значениях, таких как тип приложений, DatePattern, ConversionPattern, имя_файла, макет и т. Д.)

Обратите внимание, что я отправил вам единственный код, специфичный для конкретной проблемы.

С другой стороны, если вы знаете ответ о том, как сделать log4j.xml, что является частью моей войны архив с Tomcat 6 (Juli банки находятся на месте и хорошо работают с log4j.properties), пожалуйста, дайте мне знать

Пожалуйста, помогите.

Suhaas

ответ

2

Я не совсем ясно, на ваш вопрос. Я развернул log4j на tomcat 6 без проблем (можете ли вы опубликовать конкретные проблемы, возникающие у вас с помощью xml-конфигурации?). Я не уверен, что вы подразумеваете под «Я выяснил, как сделать log4j.properies работой с Tomcat 6 с дополнительными баночками, использующими механизм регистрации JULI в Tomcat 6»).

  • Конфигурация в правильном месте?
  • загружены некоторые из ваших банок из глобального каталога tomcat ($TOMCAT_HOME/lib)? Если так , библиотека может быть ищет конфигурацию из глобального каталога, , а не из вашего webapp.

Если вы только что говорили о том, как управлять отдельными иерархии классов в вашем 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, чтобы установить log4j в tomcat - это сложнее, чем в старых версиях (4.1-5.5). Я считаю, что вы должны положить свой log4j.xml под каталог WEB-INF/classes в свою войну.

Дополнительный подход заключается в использовании рамки пружины для этого - см Log4jConfigListener's API

0

IT мне кажется, что не было никаких проблем с созданием бревен даже с log4j.xml

Я использовал http://tomcat.apache.org/tomcat-6.0-doc/logging.html, чтобы создать механизм регистрации, как было предложено.

Интересно, что журналы были созданы в каталоге bin Tomcat 6 !!! Это что-то делать с текущей рабочей директории и в моем случае это, кажется, каталог бен согласно некоторым Каталина установки

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

у меня была аналогичная проблема, и это работает для меня.

0

несколько простых шагов, описанных ниже, помогут вам настроить log4j веб-приложения для инициализации:

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) остановить кота

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

3) В (TOMCAT_HOME)/CATALINA_HOME/conf каталоге, вы будете иметь файл tomcat6.conf. Отредактируйте файл, как описано ниже. Если нет CATALINA_OPTS в tomcat6.conf, создайте его.

# 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) Запустите Tomcat с приложением конкретных startup.sh сценария.

5) Это все, все готово. Проверьте журнал, чтобы узнать, читает ли tomcat log4j.xml, указанный вами в tomcat6.conf.

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

Важно заметить журнал: запуск сервера в 547 мс log4j:: INFO Использование URL [файла: /opt/otccalypso/guiadmd01/tomcat6/conf/log4j.xml] для автоматического log4j конфигурации. – Preetam