SLF4J遷移器(Migrator)


如果在Jakarta Commons Logging(JCL)或log4j或java.util.logging(JUL)中有專案,並且您希望將這些專案轉換為SLF4J,則可以使用SLF4J發行版中提供的遷移器工具執行此操作。

SLF4J遷移器(Migrator)

執行SLF4J Migrator

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("這是一條偵錯紀錄檔資訊.");
      log.info("這是一條訊息紀錄檔資訊.");
   }
}

要將範例log4j(2)專案遷移到slf4j,需要檢查從log4j到slf4j的無線電鈕並選擇專案目錄,然後單擊Exit 以進行遷移。

遷移器更改了上面的程式碼如下。在這裡,可觀察到匯入和記錄器語句已修改。

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("這是一條偵錯紀錄檔資訊.");
      log.info("這是一條訊息紀錄檔資訊.");
   }
}

由於專案中已經有log4j.jar,因此需要將slf4j-api.jarslf4jlog12.jar檔案新增到專案中以執行它。

SLF4JMigrator的局限性

SLF4J遷移器有以下局限性。

  • Migrator不會修改像ant,maven和ivy這樣的構建指令碼,需要動手修改。
  • Migrator不支援String型別以外的訊息。
  • Migrator不支援FATAL級別。
  • 使用log4j時,遷移器不會將呼叫遷移到PropertyConfiguratorDomConfigurator