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(包含日志产生的时间、线程、类别等等信息)