Как мне войти из моего веб-приложения в Tomcat 6 - PullRequest
4 голосов
/ 07 апреля 2010

Как войти в систему из моего веб-приложения, развернутого на Tomcat 6?Куда следует ожидать вывода журнала (внутренние файлы журнала tomcat или будет создан другой файл журнала)?Я вижу тонну документации, но мне трудно найти прямой ответ на вышеуказанные вопросы.Где я должен ожидать появления журнала (в настоящее время это log4j не генерирует файл журнала и не отображается в моей консоли).Я пытаюсь следовать http://www.laliluna.de/articles/log4j-tutorial.html.

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### file appender
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize=100KB
log4j.appender.file.maxBackupIndex=5
log4j.appender.file.File=test.log
log4j.appender.file.threshold=info
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.rootLogger=debug, stdout

В своем приложении я определяю объект журнала:

private static org.apache.log4j.Logger log = Logger.getLogger(MyClass.class);
log.error("LOGGING!");

Спасибо за помощь.

Ответы [ 5 ]

4 голосов
/ 07 апреля 2010

2 вещи попробовать:

1: Измените test.log на /tmp/test.log, чтобы точно знать, где находится файл.

2: Поместите файл конфигурации log4j.properties в каталог apache-tomcat-6.0.x / lib вместе с файлом log4j-1.2.15.jar. И нет никаких файлов log4j в ваших веб-приложениях / * / WEB-INF / lib

Вот как я это делаю, и это работает для меня. Вот полезный фрагмент из моих log4j.properties (если вы используете этот конфиг, не забудьте сделать mk / tmp / logs)

log4j.rootLogger=debug, root
log4j.appender.root=org.apache.log4j.FileAppender
log4j.appender.root.layout = org.apache.log4j.PatternLayout
log4j.appender.root.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.root.file = /tmp/logs/root.log
log4j.appender.root.append = true

log4j.category.mside = DEBUG,msideAppender
log4j.category.javashare = DEBUG,msideAppender

log4j.additivity.mside = false
log4j.additivity.mside.msideAppender = false
log4j.additivity.javashare = false

#Define msideAppender.
log4j.appender.msideAppender = org.apache.log4j.RollingFileAppender
log4j.appender.msideAppender.MaxFileSize=10MB
log4j.appender.msideAppender.MaxBackupIndex=7
log4j.appender.msideAppender.file = /tmp/logs/mside.log
log4j.appender.msideAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.msideAppender.layout.conversionPattern = %d [%t] %-5p %c - %m%n
log4j.appender.msideAppender.append = true
2 голосов
/ 30 октября 2010

Ваша конфигурация log4j будет подхвачена log4j, если вы поместите ее в classpath вашего веб-приложения, например, в WEB-INF / классах /. Убедитесь, что ваш log4j.jar находится в WEB-INF / lib.

Выход заданного вами ConsoleAppender, который регистрируется на stdout, перейдет в $ {CATALINA_BASE} /logs/catalina.out, как и любой выходной поток Tomcat.

Что касается RollingFileAppender, вы должны определить правильный путь. Если вы хотите, чтобы журналы вашего веб-приложения появлялись в каталоге журналов Tomcat, измените файл для этого приложения на:

log4j.appender.file.File=${catalina.base}/logs/test.log
2 голосов
/ 07 апреля 2010

IIRC Tomcat v4 / v5 отправляет стандартный вывод в файл catalina.out, поэтому любой вывод log4j с использованием консольного приложения также будет идти в этот файл. Не уверен, что это все же относится к более новым версиям Tomcat.

1 голос
/ 07 апреля 2010

Кстати, используйте системное свойство -Dlog4j.debug системное свойство. Это должно сказать вам, куда, черт возьми, log4j отправляет свой вывод.

Кроме того, если ваша установка tomcat выполняется в системе * nix или вы работаете в Windows с установленным cygwin, вы можете использовать команду find , чтобы определить, какие файлы изменены сразу после отправки HTTP-запрос к Tomcat (который, как вы знаете, должен производить вывод журнала)

cd <your tomcat install>    
ls -ltr `find . -type f -ls` | tail -10

Это должно показать вам последние 10 файлов, которые были обновлены или изменены. Это не будет работать, если в вашем приложении есть файлы с пробелами в именах файлов.

0 голосов
/ 22 мая 2015

Я попробовал следующий способ и убедитесь, что он работает хорошо:

  1. поместите свое собственное место log4j.properties в путь;
  2. затем обновите ваш catalina.sh под tomcat, добавьте ниже аналогичную строку:

    JAVA_OPTS = "- Dlog4j.configuration = файл: $ {yourownlog4jpath}"

...