根据Tomcat参考,我决定为每个应用程序设置日志记录。我在应用程序目录的文件"WEB-INF/classes/logging.properties"中指定了以下处理程序:
handlers = 5orderbook.org.apache.juli.FileHandler
5orderbook.org.apache.juli.FileHandler.level = FINE
5orderbook.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
5orderbook.org.apache.juli.FileHandler.prefix = orderbook.
日志记录文件已创建。但我什至没有设置任何特定的记录器(或根据参考的"设施"),同时获得以下额外记录:
янв 29, 2016 9:18:34 AM org.apache.catalina.core.ApplicationContext log
INFO: Spring WebApplicationInitializers detected on classpath: [my.app.config.SecurityInitializer@34dff4af]
янв 29, 2016 9:18:35 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
янв 29, 2016 9:18:35 AM org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization started
<...>
当我将处理程序分配给特定包时,没有任何变化:
my.level = FINE
my.handlers = 5orderbook.org.apache.juli.FileHandler
我做错了什么?如何防止不相关的记录污染日志文件?
嗯,它似乎是内置 Spring 依赖项的"功能",称为 Jakarta Commons Logging。在排除了公共日志依赖项并将其替换为jcl-over-slf4f之后,Spring 的记录已从应用程序的日志文件中消失。这是我的pom.xml元素:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.14</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.14</version>
</dependency>