ssm中使用logback日志

ssm中使用logback日志

前言:在我的另一篇博客中(springboot日志框架)介绍现在所流行的一些日志框架,本文主要针对ssm中使用logback日志。

引入依赖

<dependency>
  <groupId>ch.qos.logbackgroupId>
  <artifactId>logback-classicartifactId>
  <version>1.2.3version>
dependency>

在类路径下(src/main/resources)新建一个logback.xml文件

这里贴出一个模板,下面会有解释


<configuration scan="true" scanPeriod="60 seconds" debug="false">
	
	
	
	<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>
	
	<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
		
		<file>${log.filePath}/debug.logfile>
		<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>DEBUGlevel>
			<onMatch>ACCEPTonMatch>
			<onMismatch>DENYonMismatch>
		filter>
	appender>
	
	<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
		
		<file>${log.filePath}/info.logfile>
		<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>INFOlevel>
			<onMatch>ACCEPTonMatch>
			<onMismatch>DENYonMismatch>
		filter>
	appender>
	<logger name="com.zfc" level="${log.level}" additivity="true">
		<appender-ref ref="debugAppender"/>
		<appender-ref ref="infoAppender"/>
	logger>
	<root level="info">
		<appender-ref ref="consoleAppender"/>
	root>
configuration>

使用

如果用上面的模板,那么需要改57行的 ,name的值为 你要打印日志的范围,我设置的是在com.zfc包下都可以使用日志。

Logger logger = LoggerFactory.getLogger(getClass()); 先new出一个LoggerFactory,然后在你的代码处要打印日志的地方,使用logger.level();

level 级别: RACE

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

........
   @Test
   public void testLog(){

       Logger logger = LoggerFactory.getLogger(getClass());
       logger.debug("》》》》》》》》》你好debug日志")
       logger.info("》》》》》》》》》你好info日志");
   }

模版解析

<configuration scan="true" scanPeriod="60 seconds" debug="false">
  • scan : 就是扫描,
  • scanPeriod : 扫描的间隔时期

​ 就是每60秒会扫描日志配置文件,是否改变,如果改变了,就会自动更新。

<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" />

property 标签 在这里我们来标记常量,就是对于一些重复使用的值,就封装成一个常量,使用时,就用${name}.

  • 第一个赋值了日志默认的输出级别
  • 第二个赋值了日志存在的最大个数
  • 第三个赋值了日志输出文件的路径
  • 第四个赋值了日志的输入格式 时间 : 线程 :日志级别 :在哪个类下或者自己起的名字:日志内容
	<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${log.pattern}pattern>
		encoder>
	appender>
  • appender 在这里面我们设置日志级别的输出的 一些属性设置。
  • name : 这里可以随便起,当然要符合规范,下面要用到
  • class:这个跟你要打印到控制台,还是输出到文件里(属性)有关系。
  • 这里一打印到控制台为例,那么class就写上 ch.qos.logback.core.ConsoleAppender
  • encoder:将日志事件转换为字节数组 ,还可以写入到文件中
  • patten:就是设置日志输出的格式 ,那么我们这里就用我们设置的常量就好了。
<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
		
		<file>${log.filePath}/debug.logfile>
		<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>DEBUGlevel>
			<onMatch>ACCEPTonMatch>
			<onMismatch>DENYonMismatch>
		filter>
	appender>
  • class=“ch.qos.logback.core.rolling.RollingFileAppender” 这里就是滚动日志文件类型,就是每天都会有一个日志文件(当然是你要用了到日志)
  • file: 这是生成日志文件的路径 ,这里使用了常量值 ,然后后面加上文件名了。
  • rollingPolicy: 这里配置了滚动日志的属性。
  • fileNamePattern :
  • 例子:2019.4.26号的日志文件名为debug.log ,那么2019.4.27 这个日志就变为了debug.2019-4-26.log.gz.
  • (.gz 这里将昨天的日志文件进行压缩)
  • filter: 过滤器 ,就是只接受这个级别的日志信息 。
<logger name="com.zfc" level="${log.level}" additivity="true">
		<appender-ref ref="debugAppender"/>
		<appender-ref ref="infoAppender"/>
	logger>
	<root level="info">
		<appender-ref ref="consoleAppender"/>
	root>
  • root : 就是根配置,就是默认输出的日志级别格式就是打印到控制台,级别是level(在不设置logger的时候,就用它)

    logger: 就是将上面我们appender中的设置,生效。

    ​ name:日志可以用的范围

    ​ level:默认级别

    ​ additivity(true):就是root 里面的配置加到logger中去,级别会变成logger中的级别

    ​ appender-ref: 就是我们上面 appender 标签中的name属性的值。

你可能感兴趣的:(ssm中使用logback日志)