log4j с Tomcat6
-
16-09-2019 - |
Вопрос
У меня своеобразная проблема с Log4j.Мы развертываем на Weblogic 10, используя log4j.xml
.Это отлично работает.Мы придумали, как запустить Tomcat 6 таким образом, чтобы мы могли разрабатывать на этой платформе и развертывать его на Weblogic 10.
Я придумал, как сделать log4j.properies
работайте с Tomcat 6 с дополнительными JAr-файлами, которые используют механизм журналирования 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
), пожалуйста, дайте мне знать
Пожалуйста помоги.
Сухаас
Решение
Мне не совсем понятен ваш вопрос.я развернул log4j
на tomcat 6 без проблем (можете ли вы опубликовать конкретные проблемы, которые возникли у вас с вашей конфигурацией xml?).Я не совсем понимаю, что вы имеете в виду, когда говорите: «Я придумал, как сделать log4j.properies
работать с Tomcat 6 с дополнительными jar-файлами, использующими механизм журналирования JULI в Tomcat 6").
- находится ли конфигурация в правильном месте?
- некоторые из ваших банок загружаются из Global Tomcat (
$TOMCAT_HOME/lib
) каталог?Если это так, библиотека может искать конфигурацию из Global Directory, а не с вашего веб -приложения.
Если вы просто говорите о том, как управлять отдельными иерархиями классов в вашем 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
Другие советы
Мне кажется, что даже с log4j.xml проблем с созданием логов не было
я использовал http://tomcat.apache.org/tomcat-6.0-doc/logging.html создать механизм регистрации, как было предложено.
Интересно, что журналы создавались в каталоге bin Tomcat 6 !!!Это как-то связано с текущим рабочим каталогом, и в моем случае это каталог bin согласно некоторым настройкам Catalina.
Несколько простых шагов, описанных ниже, помогут вам настроить инициализацию 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) Вот и все, все готово.Проверьте журнал, чтобы увидеть, читает ли кот 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].
Мы используем tomcat6 с log4j
.Мы следовали за следующее руководство установить log4j
в коте - сложнее, чем на старых версиях (4.1-5.5).Я считаю, что тебе следует положить свой log4j.xml
под WEB-INF/classes
каталог в вашей войне.
Дополнительный подход — использовать для этого структуру Spring — см. API Log4jConfigListener
В соответствии с http://boncey.org/2006_7_25_log4j_with_xml_configuration
export CATALINA_OPTS="-Dlog4j.configuration=log4j.xml"
(Я полагаю, чтобы заставить его искать.xml
скорее, чем.properties
)- помещать
log4j.xml
файл вWEB-INF/classes
У меня была аналогичная проблема, и это сработало для меня.