apache.common.logging是一种log的框架接口,它本身并不实现log记录的功能,而是在运行时动态查找目前存在的日志库,调用相关的日志函数,从而隐藏具体的日志实现(commons-logging会自动发现并应用Log4j)
log4j是具体的日志实现,真正负责"写"日志的这个功能
要使用Log4j:
1,拷贝log4j.jar;
2,编写log4j.properties配置文件。
Log4j中最顶级的记录器称为rootLogger,可通过Logger.getRootLogger()方法获得根记录 器,其它Logger通过Logger.getLogger(name) 方法获得。
Appender:附着器,用来控制日志信息的输出目标。Log4j中有多种appender,分别用来将日志 信息输出到控制台、文件、GUI组件等。Layout:定义日志的输出内容及格式。
trace:更加细节的信息。期望这类信息仅被写入log文件中。
通常情况下,我们希望将info级别以上的日志信息输出到控制台,而debug级别以上的信息写入到log文件中,而error信息写入到一个单独的文件中去,下面我们的实例将会实现这样的功能。log4j.rootLogger = [ level ] , appenderName, appenderName, …
level设定日志输出等级,记录器将只记录该等级以上的日志信息。level取值:OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL。
log4j.appender.stdOut.layout=org.apache.log4j.SimpleLayout
○如果使用PatternLayout,还需设置conversionPattern,该属性类似于java中的格式说明字符串,其中包含的转换符规定了输出的内容和格式。
【示例】FileAppender和PatternLayout
log4j.appender.myLogFile=org.apache.log4j.FileAppender
log4j.appender.myLogFile.file=c:/test-log.log
log4j.appender.myLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.myLogFile.layout.conversionPattern=%d [%c]-[%-5p]%m%n
转换符的含义
%d 日期和时间
%m 代码中给定的消息内容
%p 日志的等级,即DEBUG,INFO,WARN,ERROR,FATAL等
%c 所在类的全名
%t 产生该日志的线程名
%n 回车换行符
放在classpath下,如果是Maven中就在src/resources下。具体意义看注释。
### set log levels ###
log4j.rootLogger = debug , stdout , D , E
### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
## 输出INFO级别以上的日志
log4j.appender.stdout.Threshold = INFO
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
log4j.appender.D.File = D:/logs/log.log
log4j.appender.D.Append = true
## 输出DEBUG级别以上的日志
log4j.appender.D.Threshold = DEBUG
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.E = org.apache.log4j.DailyRollingFileAppender
## 异常日志文件名
log4j.appender.E.File = D:/logs/error.log
log4j.appender.E.Append = true
## 只输出ERROR级别以上的日志!!!
log4j.appender.E.Threshold = ERROR
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
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class LogTest {
private static Log logger = LogFactory.getLog(LogTest.class);
public static void main(String[] args) {
logger.trace("我是trace信息");
logger.debug("我是debug信息");
logger.info("我是info信息");
logger.warn("我是warn信息");
logger.error("我是error信息");
logger.fatal("我是fatal信息");
}
}
参考:https://blog.csdn.net/geekun/article/details/51398621