ssm中使用logback日志

ssm中使用logback日志

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

引入依赖

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.2.3</version>
</dependency>

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

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

<?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 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>
	<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<DEBUG<INFO<WARN<ERROR

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.log</file>
		<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>
  • 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属性的值。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值