
SLF4J - 遷移工具
如果您有一個使用 Jakarta Commons Logging (JCL)、log4j 或 java.util.logging (JUL) 的專案,並且想要將其轉換為 SLF4J,您可以使用 SLF4J 分發版中提供的遷移工具。

執行 SLF4J 遷移工具
SLF4J 是一個簡單的單個 jar 檔案 (slf4j-migrator.jar),您可以使用 java –jar 命令執行它。
要執行它,請在命令提示符下瀏覽到您擁有此 jar 檔案的目錄,然後執行以下命令。
java -jar slf4j-migrator-1.8.0-beta2.jar Starting SLF4J Migrator
這將啟動遷移工具,您將看到一個獨立的 Java 應用程式,如下所示:

如視窗中指定,您需要檢查要執行的遷移型別,選擇專案目錄,然後單擊“遷移到 SLF4J”按鈕。
此工具會轉到您提供的原始檔,並執行簡單的修改,例如將匯入行和日誌記錄宣告從當前日誌記錄框架更改為 SLF4j。
示例
例如,假設我們在 Eclipse 中有一個使用log4j(2)的示例專案,其中包含以下單個檔案:
import org.apache.log4j.Logger; import java.io.*; import java.sql.SQLException; import java.util.*; public class Sample { /* Get actual class name to be printed on */ static Logger log = Logger.getLogger(Sample.class.getName()); public static void main(String[] args)throws IOException,SQLException { log.debug("Hello this is a debug message"); log.info("Hello this is an info message"); } }
要將示例log4j(2)專案遷移到 slf4j,我們需要選中從 log4j 遷移到 slf4j 單選按鈕,選擇專案的目錄,然後單擊退出按鈕進行遷移。

遷移工具將上述程式碼更改如下。在這裡,如果您觀察匯入和日誌記錄語句,它們已被修改。
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; import java.sql.SQLException; import java.util.*; public class Sample { static Logger log = LoggerFactory.getLogger(Sample.class.getName()); public static void main(String[] args)throws IOException,SQLException { log.debug("Hello this is a debug message"); log.info("Hello this is an info message"); } }
由於您的專案中已經包含log4j.jar,因此您需要向專案中新增slf4j-api.jar 和slf4j-log4j12.jar 檔案才能執行它。
SLF4JMigrator 的侷限性
以下是 SLF4J 遷移工具的侷限性。
遷移工具不會修改構建指令碼,例如 ant、maven 和 ivy,您需要自行修改。
遷移工具不支援除字串型別以外的訊息。
遷移工具不支援 FATAL 級別。
在使用 log4j 時,遷移工具不會遷移對 PropertyConfigurator 或 DomConfigurator 的呼叫。