logback

  • logback介绍

    • 使用logback的目的
      • 故障定位
      • 显示程序运行状态,定位为题的依据
    • 三大模块
      • logback-access
        • 与servlet容器集成,提供通过http访问日志功能,意思就是第三方软件可以通过这个模块来访问logback记录的日志
      • logback-classic
        • log4j的改良版本,完整实现了slf4j的API,可以让我们很方便地更换成其他日志系统,比如说log4j等;
      • logback-core
        • 为前面两个模块提供基础模块
  • logback配置

    • 当我们使用logback-classic.jar时,应用启动,logback加载顺序:
      1. 在系统配置文件System Properties中寻找是否有logback.configurationFile对应的value
      2. 在classpath下寻找是否有logback.groovy(即logback支持groovy与xml两种配置方式)
      3. 在classpath下寻找是否有logback-test.xml
      4. 在classpath下寻找是否有logback.xml
    • logback主要标签介绍
      1. <configuration>,只有三个属性,分别是:
        1. scan:当scan被设置为true时,当配置文件发生改变,将会被重新加载,默认为true
        2. scanPeriod:检测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认为毫秒,当scan=true时这个值生效,默认时间间隔为1分钟
        3. debug:当被设置为true时,将打印出logback内部日志信息,实时查看logback运行信息,默认为false;
      2. <appender>,指定日志输出目的地,即日志输出的媒介,可以是控制台、文件、远程套接字服务器等
        1. ConsoleAppender,将日志输出到控制台
          <!-- 控制台设置 -->
          <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
          	<encoder>
          		<pattern>${log.pattern}</pattern>
          	</encoder>
          </appender>

           

        2. FileAppender,将日志输出到文件中
          <appender name="FILE" class="ch.qos.logback.core.FileAppender">  
              <file>D:/123.log</file>  
              <append>true</append>  
              <encoder>  
                  <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>  
              </encoder>  
          </appender>

           

        3. RollingFileAppender,滚动记录文件,先将日志记录到指定文件,当符合某个条件时再讲日志记录到其他文件
          <!-- DEBUG -->
          <appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
          	<!-- 文件路径 -->
          	<file>${log.filePath}/debug.log</file>
          	<!-- <rollingPolicy>的作用是当发生滚动时,定义RollingFileAppender的行为,其中上面的TimeBasedRollingPolicy是最常用的滚动策略,它根据时间指定滚动策略,既负责滚动也负责触发滚动 -->
          	<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          		<!-- 文件名称 -->
          		<fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz
          		</fileNamePattern>
          		<!-- 文件最大保存历史数量 -->
          		<maxHistory>${log.maxHistory}</maxHistory>
          	</rollingPolicy>
              <!-- 输出格式 -->
          	<encoder>
          		<pattern>${log.pattern}</pattern>
          	</encoder>
              <!-- 在当前给到的日志级别下再进行一次过滤 -->
          	<filter class="ch.qos.logback.classic.filter.LevelFilter">
          		<level>DEBUG</level>
          		<onMatch>ACCEPT</onMatch>
          		<onMismatch>DENY</onMismatch>
          	</filter>
          </appender>
      3. <logger>,作为日志的记录器,主要用于存放日志对象,还可以定义日志类型、级别等;其中有<root>标签,也是<logger>元素,是根logger,只有一个level属性;logger有三个属性:
        <logger name="com.enpong.o2o" level="${log.level}" additivity="true">
        	<appender-ref ref="debugAppender"/>
        	<appender-ref ref="infoAppender"/>
        	<appender-ref ref="errorAppender"/>
        </logger>
        <root level="info">
        	<appender-ref ref="consoleAppender"/>
        </root>
        1. name:用来指定受此logger约束的某一个包或者具体的某一个类
        2. level(可选):用来设置打印级别,五个常用打印级别从低至高依次为TRACE、DEBUG、INFO、WARN、ERROR,如果未设置此级别,那么当前logger会继承上级的级别
        3. additivity(可选):是否向上级logger传递打印信息,默认为true
    • 全部配置
      <?xml version="1.0" encoding="UTF-8"?>
      <configuration scan="true" scanPeriod="60 seconds" debug="false">
      	<!-- 定义参数常量 -->
      	<!-- TRACE<DEBUG<INFO<WARN<ERROR -->
      	<!-- logger.trace("msg") logger.debug... -->
      	<property name="log.level" value="debug" />
      	<property name="log.maxHistory" value="30" />
      	<property name="log.filePath" value="${catalina.base}/logs/webapps" />
      	<property name="log.pattern"
      		value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n" />
      	<!-- 控制台设置 -->
      	<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
      		<encoder>
      			<pattern>${log.pattern}</pattern>
      		</encoder>
      	</appender>
      	<!-- DEBUG -->
      	<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
      		<!-- 文件路径 -->
      		<file>${log.filePath}/debug.log</file>
      		<!-- <rollingPolicy>的作用是当发生滚动时,定义RollingFileAppender的行为,其中上面的TimeBasedRollingPolicy是最常用的滚动策略,它根据时间指定滚动策略,既负责滚动也负责触发滚动 -->
      		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      			<!-- 文件名称 -->
      			<fileNamePattern>${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz
      			</fileNamePattern>
      			<!-- 文件最大保存历史数量 -->
      			<maxHistory>${log.maxHistory}</maxHistory>
      		</rollingPolicy>
      		<encoder>
      			<pattern>${log.pattern}</pattern>
      		</encoder>
      		<filter class="ch.qos.logback.classic.filter.LevelFilter">
      			<level>DEBUG</level>
      			<onMatch>ACCEPT</onMatch>
      			<onMismatch>DENY</onMismatch>
      		</filter>
      	</appender>
      	<!-- INFO -->
      	<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
      		<!-- 文件路径 -->
      		<file>${log.filePath}/info.log</file>
      		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      			<!-- 文件名称 -->
      			<fileNamePattern>${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz
      			</fileNamePattern>
      			<!-- 文件最大保存历史数量 -->
      			<maxHistory>${log.maxHistory}</maxHistory>
      		</rollingPolicy>
      		<encoder>
      			<pattern>${log.pattern}</pattern>
      		</encoder>
      		<filter class="ch.qos.logback.classic.filter.LevelFilter">
      			<level>INFO</level>
      			<onMatch>ACCEPT</onMatch>
      			<onMismatch>DENY</onMismatch>
      		</filter>
      	</appender>
      	<!-- ERROR -->
      	<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
      		<!-- 文件路径 -->
      		<file>${log.filePath}/erorr.log</file>
      		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      			<!-- 文件名称 -->
      			<fileNamePattern>${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz
      			</fileNamePattern>
      			<!-- 文件最大保存历史数量 -->
      			<maxHistory>${log.maxHistory}</maxHistory>
      		</rollingPolicy>
      		<encoder>
      			<pattern>${log.pattern}</pattern>
      		</encoder>
      		<filter class="ch.qos.logback.classic.filter.LevelFilter">
      			<level>ERROR</level>
      			<onMatch>ACCEPT</onMatch>
      			<onMismatch>DENY</onMismatch>
      		</filter>
      	</appender>
      	<logger name="com.enpong.o2o" level="${log.level}" additivity="true">
      		<appender-ref ref="debugAppender"/>
      		<appender-ref ref="infoAppender"/>
      		<appender-ref ref="errorAppender"/>
      	</logger>
      	<root level="info">
      		<appender-ref ref="consoleAppender"/>
      	</root>
      </configuration>

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值