log4j с Tomcat6 - PullRequest
       53

log4j с Tomcat6

2 голосов
/ 24 апреля 2009

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

Я выяснил, как заставить 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, FileName, макет и т. Д.)

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

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

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

Suhaas

Ответы [ 5 ]

2 голосов
/ 24 апреля 2009

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

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

Если вы просто говорите о том, как управлять отдельными иерархиями классов в вашей конфигурации 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 голосов
/ 22 июня 2012

Несколько простых шагов, описанных ниже, помогут вам настроить 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. Отредактируйте файл, как описано ниже. Если в 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) Запустите tomcat с помощью сценария startup.sh вашего приложения.

5) Вот и все, все готово. Проверьте журнал, чтобы увидеть, если кот читает 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 голосов
/ 04 января 2012

Согласно 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 голосов
/ 04 июня 2009

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

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

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

0 голосов
/ 27 апреля 2009

Мы используем tomcat6 с log4j. Мы следовали инструкции , следуя инструкции , чтобы установить log4j в коте - это сложнее, чем в старых версиях (4.1-5.5). Я считаю, что вы должны поместить вашу log4j.xml в директорию WEB-INF/classes в вашей войне.

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

...