1.導入jar包

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

  2.生成配置文件 src\main\resources\log4j.propertes

log4j.rootLogger=info,ROLLING_FILE  
log4j.appender.ROLLING_FILE = org.apache.log4j.ConsoleAppender
log4j.appender.ROLLING_FILE.encoding=utf-8 (* utf-8后面不能有空格,utf為小寫)
log4j.appender.ROLLING_FILE.File = stock.log
log4j.appender.ROLLING_FILE.Append = true
log4j.appender.ROLLING_FILE.MaxFileSize= 20MB
log4j.appender.ROLLING_FILE.MaxBackupIndex= 2
log4j.appender.ROLLING_FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[log] %d - %c - %-4r [%t] %-5p %c %x - %m%n

補充:文件格式為utf-8 (idea右下角顯示)

  File ->settings... -> File Encoding ->IDE Encoding (UTF-8) Project Encoding (UTF-8)

  File -> other settings -> default Encoding ->  File Encoding ->IDE Encoding (UTF-8) Project Encoding (UTF-8)

  3.在類中使用

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private Logger logger = LoggerFactory.getLogger(xxx.class);
logger.info("write log message")
logger.info(e.getMessage());


-------------------------------------
配置文件說明:
log4j.rootLogger=info,ROLLING_FILE
# 打印等級 Info ,指定名稱ROLLING_FILE
log4j.appender.ROLLING_FILE = org.apache.log4j.ConsoleAppender
# 輸出到控制臺
log4j.appender.ROLLING_FILE.encoding=utf-8
# 編碼格式為utf-8
log4j.appender.ROLLING_FILE.File = stock.log
# 指定文件打印位置
log4j.appender.ROLLING_FILE.Append = true
#true表示消息增加到指定文件中,false則將消息覆蓋指定的文件內容,默認值是true
log4j.appender.ROLLING_FILE.MaxFileSize= 20MB
# 文件最大到20MB滾動一次
log4j.appender.ROLLING_FILE.MaxBackupIndex= 2
# 文件最多可滾動3次
log4j.appender.ROLLING_FILE.layout = org.apache.log4j.PatternLayout
# 可以靈活地指定布局模式
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[log] %d - %c - %-4r [%t] %-5p %c %x - %m%n

# %d: 輸出日志時間點的日期或時間,默認格式為ISO8601
# %c: 輸出日志信息所屬的類目,通常就是所在類的全名
# %r: 輸出自應用啟動到輸出該log信息耗費的毫秒數
# %t: 輸出產生該日志事件的線程名
# %p: 輸出日志信息優先級,即DEBUG,INFO,WARN,ERROR,FATAL,
# %x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤其用到像java servlets這樣的多客戶多線程的應用中。
# %m: 輸出代碼中指定的消息,產生的日志具體信息
# %n 輸出一個回車換行符,Windows平臺為"/r/n",Unix平臺為"/n"輸出日志信息換行

# %F: 輸出日志消息產生時所在的文件名稱
# %L: 輸出代碼中的行號

-----------------------------------------------------------------
首行:等級可分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF則不打出任何信息,如果配置為INFO這樣只顯示INFO, WARN, ERROR的log信息,而DEBUG信息不會被顯示。

1. 定義名為stdout的輸出端是哪種類型,

org.apache.log4j.ConsoleAppender(控制臺),

org.apache.log4j.FileAppender(文件),

org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件),

org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)

org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方)

2. 定義名為stdout的輸出端的layout是哪種類型,

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以靈活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),

org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息)