1. 導(dǎo)入包
spring boot中默認日志工具logback使用log4j需要在pom中做如下修改掏秩。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
在src/main/resources目錄下加入log4j.properties配置文件
其他java工程
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.小例子
一共有6個級別 TRACE DEBUG INFO WARN ERROR FATAL
獲取日志對象
static Logger logger = Logger.getLogger(MyTestLog4j.class);
進行默認配置
BasicConfigurator.configure();
設(shè)置日志輸出級別
logger.setLevel(Level.DEBUG);
不同級別日志輸出
logger.trace("跟蹤信息");
logger.debug("調(diào)試信息");
logger.info("輸出信息");
Thread.sleep(1000);
logger.warn("警告信息");
logger.error("錯誤信息");
logger.fatal("致命信息");
demo代碼
public class TestLog4j {
static Logger logger = Logger.getLogger(TestLog4j.class);
public static void main(String[] args) throws InterruptedException {
BasicConfigurator.configure();
logger.setLevel(Level.DEBUG);
logger.trace("跟蹤信息");
logger.debug("調(diào)試信息");
logger.info("輸出信息");
Thread.sleep(1000);
logger.warn("警告信息");
logger.error("錯誤信息");
logger.fatal("致命信息");
}
}
image.png
3. 配置解析
在src目錄下添加log4j.properties文件
編寫類似如下配置
#設(shè)置日志輸出的等級為debug,低于debug就不會輸出了
#設(shè)置日志輸出到兩種地方,分別叫做 stdout和 R 名稱不固定 可以自定義
log4j.rootLogger=debug, stdout, R
#分類輸出com.didispace包下的日志
#log4j.category.com.didispace=DEBUG, didifile
#對ERROR級別輸出到特定的日志文件中
#log4j.logger.error=errorfile
#第一個地方stdout, 輸出到控制臺
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.appender.layout=org.apache.log4j.TTCCLayout
#輸出格式是 %5p [%t] (%F:%L) - %m%n
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
# 第二個地方R, 以滾動的方式輸出到文件引有,文件名是example.log,文件最大100k, 最多滾動5個文件
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=5
#輸出格式是 %p %t %c - %m%n
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
#log4j.appender.file.DatePattern='.'yyyy-MM-dd
#log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
采用指定配置文件 配置文件名為log4j.properties log4j.xml等 不需要寫這一句
PropertyConfigurator.configure("log4j.properties");
打印格式
log4j日志輸出格式一覽:
%c 輸出日志信息所屬的類的全名
%d 輸出日志時間點的日期或時間,默認格式為ISO8601库物,也可以在其后指定格式啃憎,比如:%d{yyy-MM-dd HH:mm:ss }颂跨,輸出類似:2002-10-18- 22:10:28
%f 輸出日志信息所屬的類的類名
%l 輸出日志事件的發(fā)生位置缰冤,即輸出日志信息的語句處于它所在的類的第幾行
%m 輸出代碼中指定的信息犬缨,如log(message)中的message
%n 輸出一個回車換行符,Windows平臺為“rn”棉浸,Unix平臺為“n”
%p 輸出優(yōu)先級怀薛,即DEBUG,INFO迷郑,WARN枝恋,ERROR,F(xiàn)ATAL嗡害。如果是調(diào)用debug()輸出的焚碌,則為DEBUG,依此類推
%r 輸出自應(yīng)用啟動到輸出該日志信息所耗費的毫秒數(shù)
%t 輸出產(chǎn)生該日志事件的線程名
%5p [%t] (%F:%L) - %m%n 就表示
寬度是5的優(yōu)先等級 線程名稱 (文件名:行號) - 信息 回車換行
image.png
image.png