2011-11-16 27 views
1
  1. 如何使slf4j使用少數實現(appenders)如果一個想要登錄到控制檯和文件都? (類似於使用loj4.properties文件配置log4j)slf4j - 同時登錄幾個實現

  2. 如何執行我自己的slf4j impl?只是實現接口,它會自動在類路徑中找到?

回答

1

SLF4J只是一個簡單的門面:「爲Java或(SLF4J)簡單記錄門面作爲一個簡單的門面或抽象的各種日誌框架,例如java.util.logging中,Log4j和的logback,允許最終用戶在部署時插入所需的日誌記錄框架。「(從http://www.slf4j.org/

因此,您還需要一個可以打印或保存日誌消息的實現。有一些選擇:http://www.slf4j.org/manual.html#swapping我會選擇Logback。還請檢查logback manual, Chapter 4: Appenders

+0

謝謝你。就我所知,它在運行時(classpath)中搜索阻塞並使用找到的impl。有沒有機會使用所有找到的實現,而不是第一個找到的實現?我認爲這涉及到slf4j,而不是實現。即使我開發自己的包裝impl,將invokeation傳遞給所有發現的impls,但不保證我的包裝將用於類路徑上的其他可用impls而不是其他類型的包裝 – Anton

0
  1. 你在這裏混淆了appenders的實現。一個appender是一個物理日誌記錄目標(文件,控制檯等),它是來自log4j或logback的術語,它們是slf4j 實現。 SLF4J不知道關於appender。

  2. SLF4J設計用於一次執行一個實現。如果你需要使用很多,你必須自己實現org.slf4j.impl.StaticLoggerBinder,並把它放在類路徑中作爲唯一具有這個名字的類,並在你的類中路由你的日誌。不過,我仍然不確定,如果這是你想要的。

+0

謝謝。我知道slf4j的使用本身對我來說幾乎沒用(我沒有使用不同的實現或在它們之間切換)。 – Anton

+0

@ user781137不,我認爲這是值得的。它不需要任何費用,只要出現問題,您可以隨時切換實施。如果它是一個獨立的應用程序,那麼在高級exec中你可能沒問題。這可能會得心應手。 – MaDa