SLF4J - 遷移工具



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

Migrator

執行 SLF4J 遷移工具

SLF4J 是一個簡單的單個 jar 檔案 (slf4j-migrator.jar),您可以使用 java –jar 命令執行它。

要執行它,請在命令提示符下瀏覽到您擁有此 jar 檔案的目錄,然後執行以下命令。

java -jar slf4j-migrator-1.8.0-beta2.jar
Starting SLF4J Migrator

這將啟動遷移工具,您將看到一個獨立的 Java 應用程式,如下所示:

Migrator Project

如視窗中指定,您需要檢查要執行的遷移型別,選擇專案目錄,然後單擊“遷移到 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 單選按鈕,選擇專案的目錄,然後單擊退出按鈕進行遷移。

Directory Of The Project

遷移工具將上述程式碼更改如下。在這裡,如果您觀察匯入和日誌記錄語句,它們已被修改。

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.jarslf4j-log4j12.jar 檔案才能執行它。

SLF4JMigrator 的侷限性

以下是 SLF4J 遷移工具的侷限性。

  • 遷移工具不會修改構建指令碼,例如 ant、maven 和 ivy,您需要自行修改。

  • 遷移工具不支援除字串型別以外的訊息。

  • 遷移工具不支援 FATAL 級別。

  • 在使用 log4j 時,遷移工具不會遷移對 PropertyConfigurator 或 DomConfigurator 的呼叫。

廣告