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

上一篇: SLF4J參數化日誌消息 下一篇: SLF4J剖析(Profiler)