我正在使用嵌入式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未记录到任何文件):
实现工作良好(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日志(中间部分)由嵌入式Tomcat处理,我不知道如何让Tomcat使用可用的log4j及其配置。我尝试加入以下依赖项(Maven Repository或Maven Central上没有
8.5.4
版本),但没有成功。<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-log4j</artifactId>
<version>8.5.2</version>
</dependency>
有人知道如何让嵌入式Tomcat使用log4j (版本1,我没有使用log4j2)记录日志吗?
我查看/尝试了以下StackOverflow答案:
https://tomcat.apache.org/tomcat-8.0-doc/logging.html所以我查看了文档,提到
log4j
作为日志框架。它提到tomcat-juli-adapters.jar
,但我找不到嵌入式版本的(它与“正常”的Tomcat一样吗?)。我该怎么做程序化地,在我的嵌入式Tomcat实现中。Tomcat Logging using log4j?这不是我遇到的问题,它不是基于嵌入式Tomcat,版本相当旧,并且我实际上正在使用log4j而不是
System.out
。Embedded Tomcat logging over logback / sl4j这个问题实际上涉及
logback
,作者提到我发现一些关于使用一个独立的带有log4j的tomcat的信息
,但是独立版本不同,我看到作者正在使用类似的依赖项,但不确定是否曾经有解决方案。How to enable embedded tomcat logging一开始我认为这可能是解决方案,但它只是处理嵌入式Tomcat的额外日志记录。我想要嵌入式Tomcat使用应用程序的
log4j
,因此只需一个log4j.properties
文件即可定义如何记录所有内容。Logging in Embedded Tomcat我不确定为什么这个答案甚至被标记为正确,但这只是解释了Tomcat如何编写文件,而不是嵌入式Tomcat工作的日志记录方式。