目前,我正在与
合作我通过xml文件配置log4j
为此,我创建了一些appender,其中一个名为" General"。
我需要的是所有日志必须转到那个appender(包括springframework或hibernate生成的那些),并且后者都没有打印在控制台上(我还需要其他类的其他日志)。
我尝试写这些记录器:
<Loggers>
<Logger name="org" level="ALL" />
<Root level="ALL" additivity="false">
<AppenderRef ref="General"/>
</Root>
<Logger name="tests" level="ALL" additivity="false">
<AppenderRef ref="console"/>
<AppenderRef ref="General"/>
</Logger>
</Loggers>
关键在于,虽然springframework的所有包都通过该appender正确记录,但springframework仍然在控制台上登录,并且不会通过&#34; General&#34;附加目的地。我该如何解决这个问题?
编辑:我发现这可能是因为springframework似乎使用其他库(logback,slf4j等)进行了日志记录。我还读到springboot可以配置为使用log4j,因为我还不太了解Spring及其库,我不知道如何得到我想要的结果。
答案 0 :(得分:2)
当你定义org logger时,你需要在该记录器中传递appender ref 希望这会奏效。
<Logger name="org" level="ALL" >
<AppenderRef ref="General"/>
</Logger>
Spring默认为Commons Logging库。您需要禁用它,而是使用lg4j库。 您需要排除commons-logging依赖项。
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.0.RELEASE</version>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
您需要将Log4j放在类路径上,并在类路径的根目录中为其提供配置文件,即log4j.xml。 并在pom.xml中添加以下依赖项。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>runtime</scope>
</dependency>
答案 1 :(得分:0)
最后,我最后只是在pom上添加了这些依赖项。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.7</version>
</dependency>
并删除记录器
<Logger name="org" level="ALL" />