Slf4j + java.util.logging:如何配置



我正在尝试使用slf4j + java.util.logging。我知道如何设置Java源代码,通过logger = LoggerFactory.getLogger(...)logger.warn('...')或其他方式做到这一点。

但是在slf4j中设置配置的文档在哪里?我很困惑…我有log4j手册,并且熟悉日志适配器的基本知识,但我只是不确定如何使用slf4j + java.util.logging。

即:

  • 我需要指定哪个。properties文件和/或JVM -D命令行参数以指向我的配置文件?

  • java.util.logging配置文件的文档在哪里?

  • 使用slf4j会导致配置文件发生任何变化吗?(即我必须声明不同的东西,而不是直接使用java.util.logging或log4j)

参见本教程:

java -Djava.util.logging.config.file = myLoggingConfigFilePath

但是我推荐使用Logback

也可参阅官方的"Java日志概述"。

slf4j层中没有配置。它只是一个API,后端必须提供实现(或多或少)。

要使用java.util.logging作为slf4j后端,必须将slf4j发行版中的slf4j-jdk14- mule .jar放在类路径上,并执行javadoc中列出的魔法操作来启用它。如果没有,您将有一个运行时错误,说没有slf4j实现活动。

出于同样的目的,我放弃了Java日志记录,转而使用logback。实际上,使用SLF4J配置logback不需要做任何事情。只需将logback.xml放到具有logback配置的jar的根目录中,并将logback- xx .jar放到类路径中。

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="warn">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

这是一个记录到控制台的配置,但logback手册有更多的例子。

基本上,您只需要在类路径中放置slf4j-api.1.7.7.jar和slf4j-jdk14.1.7.7.jar。然后创建一个日志。属性文件,并设置系统属性-Djava.util.logging.config.file = {path_to_logging.properties}

查看本教程,其中给出了如何使用不同的日志框架(如Java logger、log4j、logback等)配置slf4j的示例。

您不需要配置SLF4J—您需要绑定并配置提供程序。我使用Logback,它是专门为SLF4J构建的。您还可以使用log4j。参见手册中的相关条目:http://www.slf4j.org/manual.html#binding

有时候你可以用这样的文件名编辑你的文件

tomcat-directory/webapps/your_app_name/WEB-INF/classes/log4j.properties

(标准log4j配置文件)。