Как записать вывод stdout в Tomcat? - PullRequest
19 голосов
/ 12 октября 2011

Есть ли способ записать весь вывод stdout в файл catalina.log в Tomcat?(т. е. все, что печатается на System.out.println())

Окно консоли, которое открывается при запуске TOMCAT/bin/startup.bat, отображает вывод из стандартного вывода, но оно не сохраняется в TOMCAT/logs/catalina.<date>.log.

Мой специфпроблема в том, что у меня есть консольный appender, определенный в log4j для вывода на консоль.Эти сообщения журнала правильно отображаются в окне консоли Tomcat, но они не записываются в catalina.log.Я использую Tomcat 5.5 на Windows.Спасибо.

РЕДАКТИРОВАТЬ:

Вот мой файл log4j.properties.Он расположен на TOMCAT/webapps/app/WEB-INF/classes/log4j.properties:

log4j.rootCategory=DEBUG, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%d{ABSOLUTE} %-5p %c{1}]: %m%n

Ответы [ 3 ]

10 голосов
/ 13 октября 2011

Ранее я сталкивался с подобными вопросами и не нашел способа сделать это, войдя в систему System.out в Windows , если вы не используете Tomcat в качестве службы Windows . Похоже, это работает по умолчанию в Unix, так как startup.sh указывает на catalina.sh, который записывает стандартный вывод в файл catalina.out, как показано ниже

org.apache.catalina.startup.Bootstrap "$@" start >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

В log4j ConsoleAppender само по себе не добавляется в файл, только к System.out

Однако я изменил ваши свойства log4j, добавив FileAppender, и этот конфиг работает, но, конечно, он заносится в отдельный файл журнала.

Новый конфиг

# Set root logger level to DEBUG.
log4j.rootLogger=DEBUG, console, myFile

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%d{ABSOLUTE} %-5p %c{1}]: %m%n




# myFile writes to file
log4j.appender.myFile=org.apache.log4j.RollingFileAppender
log4j.appender.myFile.File=logs/tomcatlog4j.log
log4j.appender.myFile.MaxFileSize=100KB
log4j.appender.myFile.layout=org.apache.log4j.PatternLayout
log4j.appender.myFile.layout.ConversionPattern==[%d{ABSOLUTE} %-5p %c{1}]: %m%n

Выход

= [15: 24: 03,819 INFO A1]: в my.jsp = [15: 24: 03,975 INFO A1]: Out of my.jsp = [15: 24: 04,880 INFO A1]: в my.jsp = [15: 24: 04,880 INFO A1]: Out of my.jsp

см. Также

Как регистрировать исключения из определенного пакета, развернутого в tomcat

записать выбранные события в отдельный файл

https://serverfault.com/questions/201178/tomcat-5-5-how-to-redirect-the-logging-output-to-one-file-per-web-application

1 голос
/ 12 октября 2011

Вы проверили, можно ли найти файл log4j.properties из вашего приложения? Может быть, вы можете проверить, установив жестко закодированный путь к файлу, например

-Dlog4j.configuration = Файл: /// C: \ Dev \ log4j.properties

Если журналы записываются после этих изменений, относительный путь к файлу log4j неверен.

0 голосов
/ 12 октября 2011

Если я посмотрю на конфигурацию регистрации по умолчанию tomcat 5.5 в logging.properties:

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler

Мне кажется, что стандартный вывод веб-приложений может быть зарегистрирован в файлы только для уровня INFO и выше, учитывая, что http://tomcat.apache.org/tomcat-5.5-doc/logging.html утверждает, что в регистраторах конфигурации JULI tomcat протоколы не используют обработчики родителя при назначении их собственные обработчики. Также файл должен иметь префикс localhost, а не catalina. Но тогда я не понимаю, как вывод поступает в ваше окно вывода: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...