当前位置: 首页 > 面试题库 >

使用Slf4j和Log4j进行Tomcat日志记录

陶唯
2023-03-14
问题内容

我已经将一个Web应用程序部署到Tomcat 7服务器上。我的应用程序使用log4jfile appender。但是,并非所有日志记录消息都已写入文件。

在我的课堂上,我有:

log4j-1.2.14.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar

我的log4j.properties文件在本地计算机上运行良好,并且已正确部署。

我看到正在写入的应用程序生成的错误消息catalina.out没有写入我的log4j logcatalina.out由于输出模式的格式与我的log4j模式不同,因此看起来的日志消息来自其他日志框架。我在中看到的日志记录catalina.log如下:

Nov 4, 2011 11:05:31 AM org.apache.myfaces.shared_impl.util.StateUtils reconstruct
SEVERE

我的log4j模式是这样的:

2011-11-03 16:42:09,336 ["http-bio-8080"-exec-13] ERROR

一些日志记录出现在我的log4j文件日志中,但不是全部。从我读到的内容来看,slf4j只需要这些jar即可将日志输出漏斗。有任何想法吗?


问题答案:

尝试包括jcl-over-slf4j作为依赖项。myfaces可能正在使用commons-logging。

检查slf4j文档:http
://www.slf4j.org/legacy.html#jcl-over-
slf4j



 类似资料:
  • 在我的项目中,我使用slf4j+log4j进行日志记录。我刚接触java,正在尝试了解日志记录是如何工作的。如果我想使用log4j以外的其他日志框架,比如java.util.logging,那么我就不需要更改任何代码,因为我使用的是SLF4J。我只需要移除log4j的jar,并添加java.util.logging的二进制。我试着了解当我们不改变任何代码时,它是如何工作的。如果问题不清楚,请让我知

  • 我在具有以下logback.xml文件的类路径中有slf4j和logback jar(该文件以前已经成功使用过)。但是,DOCX4J3.0仍然将日志记录信息打印到标准输出。我正在使用NetBeans7.4构建基于docx4j的应用程序。我想将日志级别更改为错误,并将其发送到日志文件中。不知道我错过了什么。任何帮助都是非常感谢的。

  • 但是,部署在同一台服务器上的一些其他项目使用Tomcat的lib目录中存在的slf4j和log4j库,我无法删除这些库。 Tomcat lib目录中存在的Slf4J和Log4J版本 SLF4J-API-1.4.2 当我从Tomcat的lib目录中删除这些库并使用project的pom中提到的库时,我的项目运行良好 当我注释项目的pom文件中的依赖项并使用下面Tomcat的lib中的依赖项时,会引发

  • 因此,我正在部署一个使用Hibernate4.3.6的web应用程序。和Tomcat 7。我正在尝试使用SLF4J作为日志抽象层来日志。但是,我有很多问题和疑问。首先,Hibernate和Tomcat都有不同的日志框架,分别是jboss-logging和juli(即使我在库中找不到juli),所以我认为我必须安装从这些框架到SLF4J的桥梁。对于Hibernate,根据这个答案,一个解决方案可以是

  • 我在Weblogic服务器上运行一个web应用程序(我并不熟悉)。 通过JVM args将带有日志级调试的log4j配置传递给应用程序。在日志文件中,我还可以找到一些调试级别的日志条目。 到目前为止还不错。 在调试期间,我发现一些对logger.debug()的调用不在日志文件中。 如果在调试过程中执行一步,我会在记录器:org.slf4j.impl.jdk14LoggerAdapter(com.

  • 问题内容: 我正在使用的Web应用程序偶尔会为某些用户带来数据完整性问题。我想打开跟踪级别的日志记录,但是由于我们每秒要处理100个请求,因此每个日志记录都是不可能的。 log4j是否可以有条件地记录日志?换句话说,我希望仅在特定用户发出请求时才能获得跟踪日志。由于我事先不知道哪些用户会受到影响,因此我无法简单地临时对用户名进行硬编码。 编辑: 我想我需要更清楚一点。我可以轻松地在日志语句中添加条