如何使用slf4j和java.util.logging登录tomcat [英] how to log in tomcat using slf4j and java.util.logging

查看:32
本文介绍了如何使用slf4j和java.util.logging登录tomcat的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个在 Tomcat 8 上运行的 web 应用程序.和往常一样,我想使用 slf4j,在这种情况下,由 java.util.logging 支持(因为它是 Tomcat 的默认设置).相关的依赖是这样的:

I created a webapp that runs on Tomcat 8. As always I want to use slf4j and in this case, backed by java.util.logging (because it is the default for Tomcat). The relevant dependencies are this:

<!-- logging -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.10</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>1.7.10</version>
    <scope>runtime</scope>
</dependency>

我在代码中添加了一些日志语句(信息和调试),但我找不到它们.无论是在控制台输出中(如果我从 Eclipse 启动 Tomcat),还是在/logs 文件夹中创建的任何日志文件中(我的应用程序运行良好).

I added some log statements in the code (info and debug) but I can't find them. Neither in the console output (if I start Tomcat from eclipse) nor in any of the log files created in /logs folder (My app is running fine).

那么这里缺少什么?我是否必须向 conf/logging.properties 添加一些内容(我不想将任何日志配置打包到我的应用程序中)?是否有示例如何配置部署在 tomcat 中的给定 webapp 的日志记录?

So what is missing here? Do I have to add something to conf/logging.properties (I don't want to package any log configuration into my app)? Is there an example how to configure logging of a given webapp deployed in tomcat?

推荐答案

唯一的问题是Tomcat端的配置.由于 Tomcat 不使用普通的 java.util.logging,因此配置略有不同.因此,在 conf/logging.properties 中添加一些行有帮助:

The only problem was the configuration on Tomcat side. Since Tomcat doesn't use plain java.util.logging the config is little different. So adding some lines to conf/logging.properties helped:

...

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, 5reportExport.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler 

.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.

5reportExport.org.apache.juli.AsyncFileHandler.level = FINE
5reportExport.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
5reportExport.org.apache.juli.AsyncFileHandler.prefix = reportExport.

java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter


############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler

com.prodyna.reportExport.level = FINE
com.prodyna.reportExport.handlers = 5reportExport.org.apache.juli.AsyncFileHandler

# For example, set the org.apache.catalina.util.LifecycleBase logger to log
# each component that extends LifecycleBase changing state:
#org.apache.catalina.util.LifecycleBase.level = FINE

# To see debug messages in TldLocationsCache, uncomment the following line:
#org.apache.jasper.compiler.TldLocationsCache.level = FINE

所以我添加了一个额外的处理程序5reportExport.org.apache.juli.AsyncFileHandler"来将我的东西放入单独的文件中.然后我像其他人一样配置了这个处理程序.关键部分在最后:

So i added an aditional handler "5reportExport.org.apache.juli.AsyncFileHandler" to get my stuff into seperate file. Then i configured this handler like the others. The crucial part is at the end:

com.prodyna.reportExport.level = FINE
com.prodyna.reportExport.handlers = 5reportExport.org.apache.juli.AsyncFileHandler

这对包 com.prodyna.reportExport 中的所有类使用配置的处理程序.

This uses the configured handler for all classes in package com.prodyna.reportExport.

这篇关于如何使用slf4j和java.util.logging登录tomcat的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆