SSM开发笔记3Logback

一、logback的主要模板

在这里插入图片描述

二、logback主要标签

在这里插入图片描述

三、logback的配置

       scan=“true”:配置文件发生改变自动刷新
       scanPeriod=“60 seconds” :刷新感知时间
       日志级别level的级别(log.leavel):TRACE<DEBUG<INFO<WARN<ERROR
              eg:logger.trace(“msg”) logger.debug…
       log.maxHistory:保留多长时间
       log.filePath:日志存储的根路径
       log.pattern:日志展现的格式
       日志输出类型:consoleAppender、debugAppender、infoAppender、errorAppender
       logger标签:存放日志对象,并且告诉logback要关注那个pack下的信息,name是pack的名称,level是记录的级别
       root标签:根logger 如果未定义上logger则以level这个为准

       

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- scan="true"配置文件改变,自定加载 ; scanPeriod监测配置文件是否有修改,扫描间隔,60s扫描一次 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
	<!-- 定义参数常量 -->
	<!-- 日志级别level的级别 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 ch.qos.logback.core.rolling.RollingFileAppender 滚动生成新的文件 -->
	<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>
		<!-- 过滤器,仅接受debug的信息 -->
		<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}/error.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>
	<!-- 存放日志对象,并且告诉logback要关注那个pack下的信息 -->
	<logger name="com.imooc.o2o" level="${log.level}" additivity="true">
		<appender-ref ref="debugAppender" />
		<appender-ref ref="infoAppender" />
		<appender-ref ref="errorAppender" />
	</logger>
	<!-- 根logger 如果未定义上logger则以这个为准-->
	<root level="info">
		<appender-ref ref="consoleAppender" />
	</root>
</configuration>

三A、logback验证是否配置成功

       一般会在action或者server中配置日志信息

package com.imooc.o2o.web.superadmin;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.imooc.o2o.entity.Area;
import com.imooc.o2o.service.AreaService;

@Controller
@RequestMapping("/superadmin")
public class AreaController {
	// 1、引入logback
	Logger logger = LoggerFactory.getLogger(AreaController.class);
	@Autowired
	private AreaService areaService;

	@RequestMapping(value = "/listarea", method = RequestMethod.GET)
	@ResponseBody
	private Map<String, Object> listAreas() {
		// 2、打印logger.info级别的信息
		logger.info("===start===");
		long startTime = System.currentTimeMillis();
		Map<String, Object> modelMap = new HashMap<String, Object>();
		List<Area> list = new ArrayList<Area>();
		try {
			list = areaService.getAreaList();
			modelMap.put("rows", list);
			modelMap.put("total", list.size());
		} catch (Exception e) {
			e.printStackTrace();
			modelMap.put("success", false);
			modelMap.put("errMsg", e.toString());
		}
		// 3、打印logger.error(模拟)级别的信息
		logger.error("test error!");
		long endTime = System.currentTimeMillis();
		// 3A、打印logger.debug级别的信息
		logger.debug("costTime:[{}ms]", endTime-startTime);
		logger.info("===end===");
		return modelMap;
	}

}

日志输出文件在CATALINA_BASE下
在这里插入图片描述
控制台输出的日志信息
在这里插入图片描述
CATALINA_BASE位置保存的日志文件
在这里插入图片描述
前一天的文件会打包成gz
在这里插入图片描述

发布了24 篇原创文章 · 获赞 1 · 访问量 525

猜你喜欢

转载自blog.csdn.net/Kasey_L/article/details/104930851
今日推荐