如果在Jakarta Commons Logging(JCL)或log4j
或java.util.logging(JUL)
中有專案,並且您希望將這些專案轉換為SLF4J
,則可以使用SLF4J
發行版中提供的遷移器工具執行此操作。
運行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.jar
和slf4jlog12.jar
檔添加到專案中以執行它。
SLF4JMigrator的局限性
SLF4J遷移器有以下局限性。
- Migrator不會修改像ant,maven和ivy這樣的構建腳本,需要動手修改。
- Migrator不支持
String
類型以外的消息。 - Migrator不支持
FATAL
級別。 - 使用log4j時,遷移器不會將調用遷移到
PropertyConfigurator
或DomConfigurator
。
上一篇:
SLF4J參數化日誌消息
下一篇:
SLF4J剖析(Profiler)