java - 在 Tomcat 上配置 simplelogger (slf4j)

标签 java tomcat logging slf4j system.out

我有一个在 Windows 机器上作为服务运行的 tomcat 7。有一个滚动部署方案处于 Activity 状态,如果我将 war 文件放在 tomcat/webapps 文件夹中,它会自动解压缩并部署。我的 war 文件如下所示:

MyApp.war
+- META-INF
+- WEB-INF
   +- classes
       + com.company... (the actual class files)
       +-simplelogger.properties
   +- lib
       +- slf4j-api-1.7.12
       +- slf4j-simple-1.7.12
   +- web.xml

在我的 simplelogger.properties 中我有这个输出属性:

org.slf4j.simpleLogger.logFile=System.out

war 的先前版本使用 system.out.println() 进行“日志记录”,并将写入 sysout 的所有内容附加到文件 tomcat/logs/stdout .log,所以我认为这是标准的 tomcat 行为。

不幸的是,我的新设置不起作用。日志记录不会出现在 stdout.log 文件中。当我使用 maven/tomcat 插件在 eclipse 中运行 war 时,它确实工作正常。

我错过了哪些配置细节? 我在 tomcat/conf 文件夹中查找任何处理日志记录的内容,我发现了以下内容:

  • 在 catalina.properties 中:与日志无关。
  • 在 server.xml 中:与日志无关
  • logging.properties:我看到很多设置,但与 sysout 或 stdout.logs 无关。作为引用,这里是 full file .

最佳答案

您必须设置“控制台附加程序”以将 System.out 输出引导至日志文件。

log4j.xml 中的基本配置如下:

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
 <errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
 <param name="Target" value="System.out"/>
 <param name="Threshold" value="DEBUG"/>
 <layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
 </layout>
</appender>

关于java - 在 Tomcat 上配置 simplelogger (slf4j),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29789794/

相关文章:

django - 将客户端 IP 信息添加到 Django 记录器中

java - 如何沿y轴旋转图像?

java - 使用现有同级属性值对属性进行 Jackson 多态反序列化

jsf - Tomcat 服务器上 Java EE 应用程序的 Maven 依赖项。 javaee-api有什么问题?

google-app-engine - 直接提供 HTML 页面时如何应用 servlet 过滤器?

python - multiprocessing.Process 的日志输出

java - 关于事务和事件监听器

java - 将 PDF 评论提取为 HTML

eclipse - 对没有上下文根的 Java 应用程序进行本地测试

java - Android - Log 类型未定义方法 i(String, String)