在jar文件中配置SLF4J

时间:2015-04-01 13:38:51

标签: java slf4j

我有自己的jar文件,用作我的主应用程序的库。我需要将SLF4J设置为我的记录器并在我的jar中配置它。

  • 将日志写入文件
  • 在属性文件中设置其他配置

当用Google搜索时,会有针对网络应用的示例。任何人都让我知道如何做上述功能或提及任何有用的资源。

3 个答案:

答案 0 :(得分:2)

对于图书馆,您应该只包含slf4j-api.jar。这意味着在您的代码中,您应该只使用SLF4J的API中的类,即LoggerFactoryLogger

您的图书馆不应该定义有关记录的任何其他内容。使用您的库定义底层日志记录实现(logback,log4j,jcl等)并包含必要的绑定以及底层日志记录平台&#的应用程序负责# 39;配置,例如logback.xml文件。

请参阅SLF4J manual以获取进一步的参考。

答案 1 :(得分:0)

要使用slf4j记录内容,必须在应用程序中包含slf4j-api jar。这是slf4j日志记录的最低限度。如果使用maven,它可以包含在pom中,如下所示

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.10</version>
</dependency>

但是,slf4j中的默认日志记录行为非常简单。在几乎所有情况下,您都希望将slf4j日志发送到日志框架,该日志框架可以执行更复杂的日志记录。可以包含几个罐子来实现这一目标。我使用log4j,所以下面的例子是针对该框架的。为了登录log4j,需要slf4j-log4j12 jar。

Pom依赖

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.10</version>
</dependency>

从那里所有slf4j日志都将被重定向到log4j,这将正常工作。通过log4j.properties文件配置它。以下示例log4j.properties将记录控制台和/tmp/logfile.log文件。删除控制台appender只记录到文件。

# Root logger option
log4j.rootLogger=INFO, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/tmp/logfile.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

如果要使用其他框架进行日志记录,请包含相应的jar,并按原样配置基础框架。

答案 2 :(得分:-1)

SLF4J不是记录器,因此您无法配置任何内容。使用Logback。