2015-04-01 64 views
0

我有我自己的jar文件,用作我主應用程序的庫。我需要將SLF4J設置爲我的記錄器並將其配置在我的jar中。在jar文件中配置SLF4J

  • 日誌寫入到文件
  • 設置屬性文件

當GOOGLE了其他配置,有網絡應用程序的樣本。任何人都可以讓我知道如何做到上述功能或提及任何有用的資源。

回答

2

對於圖書館,您應該只包含slf4j-api.jar。這意味着在你的代碼中,你只能在SLF4J的API中使用類,即LoggerFactoryLogger

您的圖書館不應該定義其他任何關於日誌的內容。應用程序負責使用您的庫來定義底層日誌記錄實現(logback,log4j,jcl等),幷包括必需的綁定以及底層日誌記錄平臺的配置,例如logback.xml文件。

請參考SLF4J manual作進一步參考。

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。

雙龍扶養

<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,然後配置底層框架。

+0

請讓我知道這個文件應該放在哪裏,以及如何將這個文件綁定到SLF4J工廠?如果我不需要,只需要log4j和純SLF4J日誌記錄,如何修改? – 2015-04-01 14:13:09

+0

@Débora將文件放入src/main/resources'文件夾中,如果您想將設置硬編碼到jar中。或者,將其放入文件系統的文件夾中,並在運行時將該文件夾包含在jar的類路徑中。該綁定是由slf4j-log4j12依賴性自動處理的。唯一的潛在困難是如果你包含了多個將slf4j綁定到不同框架的jar,在這種情況下,它會基本上隨機選擇一個。確保只包含log4j綁定,並且事情應該自動完成。 – 2015-04-01 14:17:47

-1

SLF4J不是記錄器,因此你不能配置任何東西。使用Logback。