Я использую встроенный Tomcat 8.5.4, т.е.
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.4</version>
</dependency>
Реализация работает отлично (Tomcat работает как шарм), единственное, что меня беспокоит, это то, что встроенный Tomcat регистрируется на System.out
. Внутри моего приложения я использую log4j
для ведения журнала, поэтому это приводит к следующей смеси журналов (а не для регистрации Tomcat в любом файле):
...
2017-07-30 17:57:54 DEBUG EmbeddedTomcat:136 - Binding servlet 'sample' to path '/sample/*'.
Jul 30, 2017 5:57:54 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-15000"]
Jul 30, 2017 5:57:54 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Jul 30, 2017 5:57:54 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Tomcat
Jul 30, 2017 5:57:54 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.5.4
Jul 30, 2017 5:57:54 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [http-nio-15000]
2017-07-30 17:57:54 INFO EmbeddedTomcat:80 - Successfully started Tomcat on port 15000 (base: null, url: http://localhost:15000).
...
В этом фрагменте первая и последняя строки (после и до ...
) регистрируются моим приложением с использованием log4j и конфигурации log4j (которая записывает в файл и System.out
). Тем не менее, средняя часть (регистрация Tomcat) обрабатывается Embedded Tomcat, и я понятия не имею, как заставить Tomcat использовать доступный log4j (и его конфигурацию).
Я попытался добавить следующую зависимость (версия 8.5.4
недоступна в репозитории Maven или Maven Central), но безуспешно.
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-log4j</artifactId>
<version>8.5.2</version>
</dependency>
Кто-нибудь знает, как заставить Embedded Tomcat вести журнал с помощью log4j (версия 1, я не использую log4j2)?
Я посмотрел/попробовал следующие ответы StackOverflow:
https://tomcat.apache.org/tomcat-8.0-doc/logging.html Итак, я просмотрел документацию, в которой
log4j
упоминается как структура ведения журнала. В нем упоминаетсяtomcat-juli-adapters.jar
, которого я не смог найти для встроенной версии (это то же самое, что и «обычный» Tomcat?). Как бы я сделал это программно, то есть в моей реализации Embedded Tomcat.Ведение журнала Tomcat с использованием log4j? На самом деле это не проблема, с которой я столкнулся, она не основана на Встроенный Tomcat, версия довольно старая, и на самом деле я использую log4j, а не
System.out
.Встроенное ведение журнала Tomcat через logback/sl4j Этот вопрос фактически касается
logback
и автора упоминает, чтоI found some info about using a standalone tomcat with log4j
, но автономный вариант отличается, я вижу, что автор использует похожие зависимости, но не уверен, что когда-либо было решение.Как включить встроенное ведение журнала tomcat Сначала я подумал, что это может быть решением, но все это просто связано с дополнительным ведением журнала для Embedded Tomcat. Я хочу, чтобы Embedded Tomcat использовал приложения
log4j
, поэтому один файлlog4j.properties
определяет, как все регистрируется.Вход в Embedded Tomcat Я не уверен, почему этот ответ даже помечен как правильный, но это это просто объяснение того, как Tomcat записывает файл
catalina.out
, а не то, как работает ведение журнала Embedded Tomcat.