Maven工程配置logback打印日志


logback.xml配置:


<? 
 xml version 
 ="1.0"  
 encoding 
 ="UTF-8" 
 ?>
 
  
 <!--  
 从高到地低 
  OFF  
 、 
  FATAL  
 、 
  ERROR  
 、 
  WARN  
 、 
  INFO  
 、 
  DEBUG  
 、 
  TRACE  
 、 
  ALL -->
 
 <!--  
 日志输出规则 根据当前 
 ROOT  
 级别,日志输出时,级别高于 
 root 
 默认的级别时 会输出  
 -->
 
 <!--  
 以下 每个配置的 
  filter  
 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过 
 filter  
 过滤只记录本级别的日志 
 -->
 
 
 
 
 <!--  
 属性描述 
  scan 
 :性设置为 
 true 
 时,配置文件如果发生改变,将会被重新加载,默认值为 
 true scanPeriod: 
 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,
 
 默认单位是毫秒。当 
 scan 
 为 
 true 
 时,此属性生效。默认的时间间隔为 
 1 
 分钟。
 
 debug: 
 当此属性设置为 
 true 
 时,将打印出 
 logback 
 内部日志信息,实时查看 
 logback 
 运行状态。默认值为 
 false 
 。  
 -->
 
< 
 configuration  
 scan 
 ="true"  
 scanPeriod 
 ="60 seconds"  
 debug 
 ="false" 
 >
 
<!--  
 定义日志文件 输入位置  
 -->
 
< 
 property  
 name 
 ="log_dir"  
 value 
 ="logs"  
 />
 
<!--  
 日志最大的历史 
  30 
 天  
 -->
 
< 
 property  
 name 
 ="maxHistory"  
 value 
 ="30" 
 />
 
<!-- ConsoleAppender  
 控制台输出日志  
 -->
 
< 
 appender  
 name 
 ="STDOUT"  
 class 
 ="ch.qos.logback.core.ConsoleAppender" 
 >
 
  
 <!--  
 对日志进行格式化  
 -->
 
 <!--%logger{36}  
 表示 
 logger 
 名字最长 
 36 
 个字符,否则按照句点分割。
 
logger{length} 
 输出日志的 
 logger 
 名,可有一个整形参数,功能是缩短 
 logger 
 名,设置为 
 0 
 表示只输入 
 logger 
 最右边 
 -->
 
 <!--%d{HH:mm:ss.SSS} 
 输出日志的打印日志,模式语法与 
 java.text.SimpleDateFormat  
 兼容。 
 -->
 
 <!--%msg%n  
 其中 
 msg 
 表示打印输出的消息, 
  %n 
 表示换行 可选的格式修饰符位于 
 “%” 
 和转换符之间。第一个可选修饰符是左对齐 标志,符号是减号 
 “-” 
 ; 
 -->
 
 <!--thread  
 输出产生日志的线程名。 
 -->
 
  
 < 
 encoder 
 >
 
  
 < 
 pattern 
 > 
 %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n 
 </ 
 pattern 
 >
 
  
 </ 
 encoder 
 >
 
</ 
 appender 
 >




<!-- ERROR 级别日志 -->


<!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender-->

< 
 appender  
 name 
 ="ERROR"  
 class 
 ="ch.qos.logback.core.rolling.RollingFileAppender" 
 >
 
  
 <!--  
 过滤器,只记录 
 WARN 
 级别的日志  
 -->
 
  
 < 
 filter  
 class 
 ="ch.qos.logback.classic.filter.LevelFilter" 
 >
 
  
 < 
 level 
 > 
 ERROR 
 </ 
 level 
 >
 
  
 < 
 onMatch 
 > 
 ACCEPT 
 </ 
 onMatch 
 >
 
  
 < 
 onMismatch 
 > 
 DENY 
 </ 
 onMismatch 
 >
 
  
 </ 
 filter 
 >
 
  
 <!--  
 最常用的滚动策略,它根据时间来制定滚动策略 
 . 
 既负责滚动也负责触发滚动  
 -->
 
  
 < 
 rollingPolicy  
 class 
 ="ch.qos.logback.core.rolling.TimeBasedRollingPolicy" 
 >
 
  
 <!-- 
 日志输出位置 可相对、和绝对路径  
 -->
 
  
 < 
 fileNamePattern 
 > 
 ${log_dir}/%d{yyyy-MM-dd}/error-log.log 
 </ 
 fileNamePattern 
 >
 
  
 <!--  
 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且 
 <maxHistory> 
 是 
 6 
 ,
 
 则只保存最近 
 6 
 个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 
 -->
 
  
 < 
 maxHistory 
 > 
 ${maxHistory} 
 </ 
 maxHistory 
 >
 
  
 </ 
 rollingPolicy 
 >
 
 
 
 
  
 <!--  
 按照固定窗口模式生成日志文件,当文件大于 
 20MB 
 时,生成新的日志文件。窗口大小是 
 1 
 到 
 3 
 ,当保存了 
 3 
 个归档文件后,将覆盖最早的日志。
 
 <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
 
 <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern>
 
 <minIndex>1</minIndex>
 
 <maxIndex>3</maxIndex>
 
 </rollingPolicy> -->
 
 <!--  
 查看当前活动文件的大小,如果超过指定大小会告知 
 RollingFileAppender  
 触发当前活动文件滚动
 
 <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
 
 <maxFileSize>5MB</maxFileSize>
 
 </triggeringPolicy> -->
 
 
 
 
  
 < 
 encoder 
 >
 
  
 < 
 pattern 
 > 
 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n 
 </ 
 pattern 
 >
 
  
 </ 
 encoder 
 >
 
</ 
 appender 
 >
 
 
 
 
 
 
 
 
 
 
<!-- WARN 
 级别日志 
  appender -->
 
< 
 appender  
 name 
 ="WARN"  
 class 
 ="ch.qos.logback.core.rolling.RollingFileAppender" 
 >
 
  
 <!--  
 过滤器,只记录 
 WARN 
 级别的日志  
 -->
 
  
 < 
 filter  
 class 
 ="ch.qos.logback.classic.filter.LevelFilter" 
 >
 
  
 < 
 level 
 > 
 WARN 
 </ 
 level 
 >
 
  
 < 
 onMatch 
 > 
 ACCEPT 
 </ 
 onMatch 
 >
 
  
 < 
 onMismatch 
 > 
 DENY 
 </ 
 onMismatch 
 >
 
  
 </ 
 filter 
 >
 
  
 < 
 rollingPolicy  
 class 
 ="ch.qos.logback.core.rolling.TimeBasedRollingPolicy" 
 >
 
  
 <!--  
 按天回滚 
  daily -->
 
  
 < 
 fileNamePattern 
 > 
 ${log_dir}/%d{yyyy-MM-dd}/warn-log.log
 
  
 </ 
 fileNamePattern 
 >
 
  
 <!--  
 日志最大的历史 
  60 
 天  
 -->
 
  
 < 
 maxHistory 
 > 
 ${maxHistory} 
 </ 
 maxHistory 
 >
 
  
 </ 
 rollingPolicy 
 >
 
  
 < 
 encoder 
 >
 
  
 < 
 pattern 
 > 
 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n 
 </ 
 pattern 
 >
 
  
 </ 
 encoder 
 >
 
</ 
 appender 
 >
 
 
 
 
 
 
 
 
 
 
 
 
 
<!-- INFO 
 级别日志 
  appender -->
 
< 
 appender  
 name 
 ="INFO"  
 class 
 ="ch.qos.logback.core.rolling.RollingFileAppender" 
 >
 
  
 <!--  
 过滤器,只记录 
 INFO 
 级别的日志  
 -->
 
  
 < 
 filter  
 class 
 ="ch.qos.logback.classic.filter.LevelFilter" 
 >
 
  
 < 
 level 
 > 
 INFO 
 </ 
 level 
 >
 
  
 < 
 onMatch 
 > 
 ACCEPT 
 </ 
 onMatch 
 >
 
  
 < 
 onMismatch 
 > 
 DENY 
 </ 
 onMismatch 
 >
 
  
 </ 
 filter 
 >
 
  
 < 
 rollingPolicy  
 class 
 ="ch.qos.logback.core.rolling.TimeBasedRollingPolicy" 
 >
 
  
 <!--  
 按天回滚 
  daily -->
 
  
 < 
 fileNamePattern 
 > 
 ${log_dir}/%d{yyyy-MM-dd}/info-log.log
 
  
 </ 
 fileNamePattern 
 >
 
  
 <!--  
 日志最大的历史 
  60 
 天  
 -->
 
  
 < 
 maxHistory 
 > 
 ${maxHistory} 
 </ 
 maxHistory 
 >
 
  
 </ 
 rollingPolicy 
 >
 
  
 < 
 encoder 
 >
 
  
 < 
 pattern 
 > 
 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n 
 </ 
 pattern 
 >
 
  
 </ 
 encoder 
 >
 
</ 
 appender 
 >
 
 
 
 
 
 
 
 
 
 
 
 
 
<!-- DEBUG 
 级别日志 
  appender -->
 
< 
 appender  
 name 
 ="DEBUG"  
 class 
 ="ch.qos.logback.core.rolling.RollingFileAppender" 
 >
 
  
 <!--  
 过滤器,只记录 
 DEBUG 
 级别的日志  
 -->
 
  
 < 
 filter  
 class 
 ="ch.qos.logback.classic.filter.LevelFilter" 
 >
 
  
 < 
 level 
 > 
 DEBUG 
 </ 
 level 
 >
 
  
 < 
 onMatch 
 > 
 ACCEPT 
 </ 
 onMatch 
 >
 
  
 < 
 onMismatch 
 > 
 DENY 
 </ 
 onMismatch 
 >
 
  
 </ 
 filter 
 >
 
  
 < 
 rollingPolicy  
 class 
 ="ch.qos.logback.core.rolling.TimeBasedRollingPolicy" 
 >
 
  
 <!--  
 按天回滚 
  daily -->
 
  
 < 
 fileNamePattern 
 > 
 ${log_dir}/%d{yyyy-MM-dd}/debug-log.log
 
  
 </ 
 fileNamePattern 
 >
 
  
 <!--  
 日志最大的历史 
  60 
 天  
 -->
 
  
 < 
 maxHistory 
 > 
 ${maxHistory} 
 </ 
 maxHistory 
 >
 
  
 </ 
 rollingPolicy 
 >
 
  
 < 
 encoder 
 >
 
  
 < 
 pattern 
 > 
 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n 
 </ 
 pattern 
 >
 
  
 </ 
 encoder 
 >
 
</ 
 appender 
 >
 
 
 
 
 
 
 
 
 
 
 
 
 
<!-- TRACE 
 级别日志 
  appender -->
 
< 
 appender  
 name 
 ="TRACE"  
 class 
 ="ch.qos.logback.core.rolling.RollingFileAppender" 
 >
 
  
 <!--  
 过滤器,只记录 
 ERROR 
 级别的日志  
 -->
 
  
 < 
 filter  
 class 
 ="ch.qos.logback.classic.filter.LevelFilter" 
 >
 
  
 < 
 level 
 > 
 TRACE 
 </ 
 level 
 >
 
  
 < 
 onMatch 
 > 
 ACCEPT 
 </ 
 onMatch 
 >
 
  
 < 
 onMismatch 
 > 
 DENY 
 </ 
 onMismatch 
 >
 
  
 </ 
 filter 
 >
 
  
 < 
 rollingPolicy  
 class 
 ="ch.qos.logback.core.rolling.TimeBasedRollingPolicy" 
 >
 
  
 <!--  
 按天回滚 
  daily -->
 
  
 < 
 fileNamePattern 
 > 
 ${log_dir}/%d{yyyy-MM-dd}/trace-log.log
 
  
 </ 
 fileNamePattern 
 >
 
  
 <!--  
 日志最大的历史 
  60 
 天  
 -->
 
  
 < 
 maxHistory 
 > 
 ${maxHistory} 
 </ 
 maxHistory 
 >
 
  
 </ 
 rollingPolicy 
 >
 
  
 < 
 encoder 
 >
 
  
 < 
 pattern 
 > 
 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n 
 </ 
 pattern 
 >
 
  
 </ 
 encoder 
 >
 
</ 
 appender 
 >
 

  <!--配置自己的需要保存的日志--> 

 
  
 < 
 appender  
 name 
 ="zyb"  
 class 
 ="ch.qos.logback.core.rolling.RollingFileAppender" 
 >
 
  
 < 
 file 
 > 
 log_ 
 </ 
 file 
 >
 
  
 < 
 rollingPolicy  
 class 
 ="ch.qos.logback.core.rolling.TimeBasedRollingPolicy" 
 >
 
  
 <!-- rollover daily -->
 
  
 < 
 fileNamePattern 
 > 
 log_%d{yyyy-MM-dd}.txt 
 </ 
 fileNamePattern 
 >
 
  
 </ 
 rollingPolicy 
 >
 
  
 < 
 encoder 
 >
 
  
 < 
 pattern 
 > 
 %msg%n 
 </ 
 pattern 
 >
 
  
 </ 
 encoder 
 >
 
  
 </ 
 appender 
 >
 
  
 < 
 logger  
 name 
 ="zrender"  
 level 
 ="debug"  
 additivity 
 ="false" 
 >
 
  
 < 
 appender-ref  
 ref 
 ="zyb"  
 />
 
  
 </ 
 logger 
 >
 
 
 
 
<!-- root 
 级别 
  DEBUG -->
 
< 
 root  
 level 
 ="debug" 
 >
 
  
 <!--  
 控制台输出  
 -->
 
  
 < 
 appender-ref  
 ref 
 ="STDOUT"  
 />
 
  
 <!--  
 文件输出  
 -->
 
  
 < 
 appender-ref  
 ref 
 ="ERROR"  
 />
 
  
 < 
 appender-ref  
 ref 
 ="INFO"  
 />
 
  
 < 
 appender-ref  
 ref 
 ="WARN"  
 />
 
  
 < 
 appender-ref  
 ref 
 ="DEBUG"  
 />
 
  
 < 
 appender-ref  
 ref 
 ="TRACE"  
 />
 
</ 
 root 
 >
 
</ 
 configuration 
 >
 
pom.xml配置:
 
< 
 dependency 
 >
 
  
 < 
 groupId 
 > 
 ch.qos.logback 
 </ 
 groupId 
 >
 
  
 < 
 artifactId 
 > 
 logback-core 
 </ 
 artifactId 
 >
 
  
 < 
 version 
 > 
 1.2.3 
 </ 
 version 
 >
 
</ 
 dependency 
 >
 
 
 
 
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
 
< 
 dependency 
 >
 
  
 < 
 groupId 
 > 
 ch.qos.logback 
 </ 
 groupId 
 >
 
  
 < 
 artifactId 
 > 
 logback-classic 
 </ 
 artifactId 
 >
 
  
 < 
 version 
 > 
 1.2.3 
 </ 
 version 
 >
 
  
 < 
 scope 
 > 
 test 
 </ 
 scope 
 >
 
</ 
 dependency 
 >
 
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-access -->
 
< 
 dependency 
 >
 
  
 < 
 groupId 
 > 
 ch.qos.logback 
 </ 
 groupId 
 >
 
  
 < 
 artifactId 
 > 
 logback-access 
 </ 
 artifactId 
 >
 
  
 < 
 version 
 > 
 1.2.3 
 </ 
 version 
 >
 
</ 
 dependency 
 >
 
<!-- https://mvnrepository.com/artifact/org.logback-extensions/logback-ext-spring -->
 
< 
 dependency 
 >
 
  
 < 
 groupId 
 > 
 org.logback-extensions 
 </ 
 groupId 
 >
 
  
 < 
 artifactId 
 > 
 logback-ext-spring 
 </ 
 artifactId 
 >
 
  
 < 
 version 
 > 
 0.1.4 
 </ 
 version 
 >
 
</ 
 dependency 
 >
 
< 
 dependency 
 >
 
  
 < 
 groupId 
 > 
 org.slf4j 
 </ 
 groupId 
 >
 
  
 < 
 artifactId 
 > 
 jcl-over-slf4j 
 </ 
 artifactId 
 >
 
  
 < 
 version 
 > 
 1.7.12 
 </ 
 version 
 >
 
</ 
 dependency 
 >
 
< 
 dependency 
 >
 
  
 < 
 groupId 
 > 
 org.slf4j 
 </ 
 groupId 
 >
 
  
 < 
 artifactId 
 > 
 slf4j-simple 
 </ 
 artifactId 
 >
 
  
 < 
 version 
 > 
 1.7.12 
 </ 
 version 
 >
 
</ 
 dependency 
 >


测试:

private final static  
 Logger  
 logger  
 = LoggerFactory. 
 getLogger 
 (Test11. 
 class 
 );
 
private final static  
 Logger  
 zrender 
 =LoggerFactory. 
 getLogger 
 ( 
 "zrender" 
 );
 
@Test
 
public void  
 testLogger(){
 
  
 logger 
 .error( 
 "logback  
 成功了 
 " 
 );
 
  
 logger 
 .debug( 
 "logback  
 成功了 
 " 
 );
 
  
 zrender 
 .debug( 
 " 
 成功了。。。。。。 
 " 
 );
 
  
 zrender 
 .warn( 
 "sssssss" 
 );


}