1.添加maven依赖:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId> //日志桥接插件
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
2.定义日志参数配置文件:log4j.properties(默认的文件名,不要改文件名)
### 定义日志级别 ### #log4j.rootLogger= DEBUG, stdout #log4j.rootLogger= ERROR, E log4j.rootLogger= WARN, W, E ### 输出到控制台 ### 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 = %d{ABSOLUTE} %5p %c{1}:%L - %m%n ### 输出到日志文件 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender ## 异常日志文件名,对于java项目,下面路径会在项目根目录下创建logs目录写入日志 log4j.appender.D.File = ./logs/cmis/debug.log log4j.appender.D.Append = true ## 输出DEBUG级别以上的日志info log4j.appender.D.Threshold = DEBUG log4j.appender.D.DatePattern= '.'yyyy-MM-dd 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 ### 输出到日志文件 ### log4j.appender.W = org.apache.log4j.DailyRollingFileAppender ## 异常日志文件名,对于java项目,下面路径会在项目根目录下创建logs目录写入日志 log4j.appender.W.File = ./logs/cmis/warn.log log4j.appender.W.Append = true ## 输出DEBUG级别以上的日志info log4j.appender.W.Threshold = WARN log4j.appender.W.DatePattern= '.'yyyy-MM-dd log4j.appender.W.layout = org.apache.log4j.PatternLayout log4j.appender.W.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n ### 保存异常信息到单独文件 ### log4j.appender.E = org.apache.log4j.DailyRollingFileAppender ## 异常日志文件名,对于java项目,下面路径会在项目根目录下创建logs目录写入日志 log4j.appender.E.File = ./logs/cmis/error.log log4j.appender.E.Append = true ## 只输出ERROR级别以上的日志!!! log4j.appender.E.Threshold = ERROR log4j.appender.E.DatePattern= '.'yyyy-MM-dd 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
3.使用
public class LoginController { private static final Logger logger = LoggerFactory.getLogger(LoginController.class); public void testLog() { //级别依次升高,低级别会包含高级别 logger.debug("this is debug info"); logger.info("this is info info"); logger.warn("this is warn info"); logger.error("this is error info"); } }
4.相关知识
log4j提供的Appender(指定日志输出的目的地)
org.apache.log4j.ConsoleAppender(控制台), org.apache.log4j.FileAppender(文件), org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
log4j提供的Layout
org.apache.log4j.HTMLLayout(以HTML表格形式布局), org.apache.log4j.PatternLayout(可以灵活地指定布局模式), org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串), org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息 %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL %r 输出自应用启动到输出该log信息耗费的毫秒数 %c 输出所属的类目,通常就是所在类的全名 %t 输出产生该日志事件的线程名 %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2007年08月18日 23:13:28,921 %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:TestlogDemo.main(TestLog4.java:30)
这里有一篇博文也可进行参考:http://www.cnblogs.com/tankaixiong/archive/2013/04/03/2997589.html