JAVA项目中,配置LOG4j,将日志按照不同级别输出到控制台和文件中

以SSM搭建的Java web项目为例:

1、首先定义一个controller

在controller中引入log4j的logger,然后将需要输出日志的controller继承此基础类。即可实现输出日志。

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
public class BaseController {
	public static final Logger logger = Logger.getLogger(BaseController.class);
}

2.配置 log4j.properties文件,可参考如下

### set log levels (如下的stdout,D,E为自己起的名字,可以理解为日志信息输出的三个不同目的地,如仅需配置一个或两个,可根据实际进行删减)###

log4j.rootLogger = DEBUG ,  stdout,  D ,  E

### 输出到控制台(将DEBUG级别及以上的日志均输出到控制台) ###
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 =  [%c] - %m%n

### 输出到日志文件(将INFO级别及以上的日志均输出到指定的文件夹) ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = f:/logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold= INFO 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

### 保存异常信息到单独文件(将ERROR级别及以上的日志均输出到指定的文件夹)###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = f:logs/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 =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
3.上述配置的一些说明:

rootLogger后面跟着输出日志的级别:

    ERROR 为严重错误 主要是程序的错误
            WARN 为一般警告,比如session丢失
            INFO 为一般要显示的信息,比如登录登出
            DEBUG 为程序的调试信息


appender.D定义的是Log输出的地方:


           org.apache.log4j.ConsoleAppender(控制台)
           org.apache.log4j.FileAppender(文件)
           org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
           org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
           org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)


appender.D.Layout定义的是日志信息的格式:

           org.apache.log4j.HTMLLayout(以HTML表格形式布局),
           org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
           org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
           org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)


appender.D.Layout下定义的是PatternLayout才有log4j.appender.D.layout.ConversionPattern该属性自定义日志输出格式

-X号: X信息输出时左对齐;

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS}
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个"%"字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行

Threshold是个全局的过滤器,它将把低于所设置的level的信息过滤不显示出来。


2.配置 log4j.properties文件,可参考如下

你可能感兴趣的:(java基础)