1. 程式人生 > >Java日誌使用slf4j 配置log4j後,有日誌文件 但日誌文件內容為空

Java日誌使用slf4j 配置log4j後,有日誌文件 但日誌文件內容為空

actor 輸出 ole sym ack 拼接 world 輸出參數 %d

SLF4J的全稱是Simple Logging Facade for Java,即簡單日誌門面。

SLF4J並不是具體的日誌框架,而是作為一個簡單門面服務於各類日誌框架,如java.util.logging, logback和log4j。

SLF4J支持{}作為占位符,等價於C語言中的%s,而不必再進行字符串的拼接,效率有顯著的提。

1.slf4j使用

引入包 slf4j-api-1.6.2.jar

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class App{

    private static Logger logger = LoggerFactory.getLogger(App.class
); public static void main(String[] args) { logger.info("info hello world"); logger.error("error hello world"); logger.debug("debug hello world"); //輸出參數比較多時可以使用占位符 (推薦此方法,不要使用字符串拼接) logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol); } }


2.與log4j集成

依賴包:slf4j-api-1.6.2.jar,slf4j-log4j12-1.6.2.jar ,log4j-1.2.17.jar
常見問題,配置log4j後,有日誌文件,但日誌文件內容為空。
原因:
a) slf4j 可能有多個綁定實現包,如slf4j-log4j12 與slf4j-jdk14 同時存在,刪除一個包即可
b) 確認 sl4j-api與slf4j-log4j12版本是否一至,二者版本要保持一至才可以
c) 指定日誌文件具體位置 log4j.appender.D.File=d:/debug.log

3.在src目錄中創建log4j.properties (如果是maven項目,在src/main/resources目錄中創建log4j.properties)

log4j.properties

### 設置###
log4j.rootLogger=DEBUG,stdout,D,E,I
### 輸出信息到控制擡 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 輸出DEBUG 級別以上的日誌文件設置 ###
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=debug.log
log4j.appender.D.Append=false
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
### 輸出ERROR 級別以上的日誌文件設置 ###
log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File=error.log
log4j.appender.E.Append=true
log4j.appender.E.Threshold=ERROR
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
### 輸出INFO 級別以上的日誌文件設置 ###
log4j.appender.I=org.apache.log4j.RollingFileAppender
log4j.appender.I.File=info.log
log4j.appender.I.Append=true
log4j.appender.I.Threshold=INFO
log4j.appender.File.MaxFileSize=100KB
log4j.appender.I.MaxBackupIndex=15
log4j.appender.I.layout=org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

Java日誌使用slf4j 配置log4j後,有日誌文件 但日誌文件內容為空