Java日志处理:
https://blog.csdn.net/everyok/article/details/82882137
common-logging (JCL):
通用日志接口
动态查找机制,在程序运行时自动找出使用的日志库
一般配合log4j使用(其内部有一个简单的实现simple-logger),
引入log4j, 并在classpath配置log4j.xml,commons-logging 就会使log4j 使用正常
好处:代码依赖common-logging,而不是日志实现的第三方库
import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class A{private static Log logger = LogFactory.getLog(A.class);}
slf4j
Simple Logging Facade for JAVA,java简单日志门面
不同于common-logging是在运行时进行的动态绑定,它在编译时静态绑定真正的Log库
如果你需要使用某一种日志实现,那么你必须选择正确的SLF4J的jar包的集合(各种桥接包)。使用slf4j的常见代码:
import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class A {private static Logger logger = LoggerFactory.getLogger(Test.class);}
slf4j静态绑定原理
SLF4J 会在编译时绑定。org.slf4j.impl.StaticLoggerBinder面实现对具体日志方案的绑定接入。任何一种基于slf4j 的实现都要有一个这个类,也就是说实现了slf4j的产商需要重新定义与这个类相同的类名与包名。
Log4j
日志实现库,设置输出路径,格式等。
LogBack
Logback是由log4j创始人设计的又一个开源日记组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日记系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日记的功能。
[
](https://blog.csdn.net/everyok/article/details/82882137)
Logback日志使用
重要的三个类:
- 日志记录器(Logger)
- 输出端(Appender)
- 日志格式化器(Layout)
日志记录器Logger
在logback中只有一个日志记录器Logger,继承自org.slf4j.Logger且是final的。
public final class Logger implements org.slf4j.Logger, LocationAwareLogger,AppenderAttachable<ILoggingEvent>, Serializable {}
输出端Appender
常用的Appender有:
ConsoleAppender:打印日志信息到控制台,相当于System.out, System.err
FileAppender:打印日志信息到文件
RollingFileAppender: 根据RollingPolicy和TriggeringPolicy打印日志信息到文件中, TimeBasedRollingPolicy同时继承了这两个类
logback.xml配置:
配置文件的例子文件如下:<?xml version="1.0" encoding="UTF-8" ?><configuration><!-- 控制台输出日志 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><layout class="ch.qos.logback.classic.PatternLayout"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{60} - %msg%n</pattern></layout></appender><!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份) --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><File>${logCatolog}</File><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><FileNamePattern>${logCatolog}.%d{yyMMdd}</FileNamePattern><!-- keep 60 days worth of history --><MaxHistory>60</MaxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</Pattern></layout></appender><root level="ERROR"><appender-ref ref="STDOUT" /><appender-ref ref="FILE" /></root><!--这里指定logger name 是为jmx设置日志级别做铺垫 --><logger name="com.pptv"><level value="DEBUG" /></logger><!--mybatis --><logger name="jdbc.sqltiming" level="INFO" /></configuration>
LogBack注意点:
log日志有相应的级别,从小到大分别为:trace
root是默认的logger,当找不到对应的logger的时候,会以root配置的logger进行输出,并且root配置的appender会被其它logger继承。
[
