logback了解
logback是为了替代log4j出现的,
logback当前分成三个模块:logback-core,logback-classic和logback-access。
Maven依赖配置:
logback.xml文件详解
<?xml version="1.0" encoding="UTF-8"?>
<!--设置如果该日志文件修改了则刷新,指定检测该文件的时间间隔为60秒,打印logback.xml的内部日志信息-->
<configuration scan="true" scanPeriod="60 seconds" debug="true">
<property name="LOG_HOME" value="bonc_logs" />
<!-- 控制台输出 name是为了让其他标签使用的唯一标志 class用来指定日志输出的位置-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!--encoder:该标签中定义了日志的输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{32} [%file:%line] - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--定义了日志文件的目录结构和文件名:磁盘根目录:/bonc_logs/mylog-logback.log
<file>${LOG_HOME}/bonc-simkey.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--过期文件自动压缩 -->
<FileNamePattern>${LOG_HOME}/bonc-simkey.log.%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} [%file:%line] - %msg%n</pattern>
</encoder>
</appender>
<appender name="webserviceLogger"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./log/simkey.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>./log/simkey.log.%d{yyyy-MM-dd}.log.gz
</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}-%msg%n</pattern>
</encoder>
</appender>
<!--将控制QueryICCIDImpl类的日志打印 -->
<logger name="QueryICCIDImpl" level="info">
<appender-ref ref="webserviceLogger" />
</logger>
<!--org log config -->
<logger name="org.springframework" level="ERROR" />
<logger name="org.apache.zookeeper" level="WARN" />
<logger name="org.apache.hadoop" level="WARN" />
<logger name="org.quartz" level="WARN" />
<!--myibatis log configure -->
<logger name="com.apache.ibatis" level="TRACE" />
<logger name="java.sql.Connection" level="DEBUG" />
<logger name="java.sql.Statement" level="DEBUG" />
<logger name="java.sql.PreparedStatement" level="DEBUG" />
<!-- 日志输出级别 -->
<root level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<!-- 执行过程总结:
当 执行QueryICCIDImpl类的方法时,会首先执行<logger name="QueryICCIDImpl" 本身如果引用了appender-ref标签,就按照ref="log_file" 设置的格式打印;
当执行不在impl中的方法时,如<logger name="java.sql.Connection" level="DEBUG" />,会将级别为“DEBUG”及大于“DEBUG”的日志信息传递给root,root接到下级传递的信息,交给已经配置好的名为“STDOUT”和“log_file”的appender处理,“STDOUT”appender将信息打印到控制台,“log_file”appender将信息打印到日志文件;
-->
</configuration>