我有一个使用maven构建的Spring MVC简单地址簿项目。我想使用Logback进行日志记录,但我完全不熟悉它; 首先我用这种方式改变了我的pom.xml:
<!-- Spring 3 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<exclusions>
<!--Exclude Commons Logging in favor of SLF4j-->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
然后我将这些行添加到我的自定义Exception DatabaseException:
private final static Logger logger = (Logger) LoggerFactory.getLogger(DatabaseException.class);
...
public DatabaseException(Throwable cause) {
super(cause);
logger.log(Level.WARNING, cause.getMessage());
}
所以当我在其他类中出现这个异常时,日志能够打印到粗略的一些消息,但是没有工作,当我在Tomcat上运行maven时它只打印容器日志[talledContainer] INFO ....等好像我的记录器不存在
答案 0 :(得分:2)
对于您的DatabaseException使它工作,您的DatabaseException应该是这样的:
package org.myorg.myapp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DatabaseException extends Exception {
private final static Logger logger = LoggerFactory.getLogger(DatabaseException.class);
public DatabaseException(Throwable cause) {
super(cause);
logger.warn(cause.getMessage());
}
}
此外,您需要在pom.xml中包含jcl-over-slf4j依赖项。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>
我建议阅读参考文档(使用SLF4J部分)。 http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/overview.html
希望这有帮助。
答案 1 :(得分:1)
您尚未提及有关 logback.xml 的任何内容。您应该在 src / main / resources 文件夹下创建一个。