我的三种日志文件的内容是一样的,没有实现分类

来源:3-3 验证配置

27Done

2018-07-06

麻烦老师看一下:

我的logback.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--scan:当配置文件发生改变,是否去自动重新加载-->
<!--scanPeriod:扫描配置文件是否发生变化的周期-->
<!--debug:是否打印出logback内部的运行信息-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <!--定义一些全局变量-->
    <!--日志级别:按优先级升序排列(*为常用) TRACE *DEBUG *INFO WARN *ERROR-->
    <property name="log.level" value="debug"/>
    <!--log文件保留的时间-->
    <property name="log.maxHistory" value="30"/>
    <!--log文件存储的根路径-->
    <!--${catalina.base}表示tomcat实例的根目录-->
    <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="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--设置日志的输出格式-->
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    <!--设置DEBUG类型的独占日志,并设置日志产生后向文件内写入-->
    <appender name="debug" 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="info" 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>
        <!--过滤此项日志只记录ino级别的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMisMatch>DENY</onMisMatch>
        </filter>
    </appender>
    <!--设置ERROR类型的独占日志,并设置日志产生后向文件内写入-->
    <appender name="error" 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>
        <!--过滤此项日志只记录error级别的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMisMatch>DENY</onMisMatch>
        </filter>
    </appender>


    <!--name:要在哪些类的运行中产生日志,一个类只能在一个logger中产生日志
        level:产生日志的最低级别,
        additivity:将父logger的appender也继承进来,并且以本logger的设定级别来产生日志-->
    <logger name="com.zx.o2o" level="${log.level}" additivity="true">
        <!--appender-ref:将logger与appender绑定-->
        <appender-ref ref="debug"/>
        <appender-ref ref="info"/>
        <appender-ref ref="error"/>
    </logger>
    <!--root是一个特殊的根logger-->
    <root level="info">
        <appender-ref ref="console"/>
    </root>
    <!--上面两个logger(logger+root)在并存时会发生什么:
        首先logger已经将全工程的类都纳入到自己的输出范围内,那别的logger就无法再输出日志,
        其次root并没有指定输出范围,它绑定了一个在控制台输出日志的appender,按理说此appender是无效的,
        但由于logger的additivity="true"这个属性,logger会继承root的appender,并改变日志的作用范围及产生级别为自身的设定,
        所以console这个appender最终会生效,并且输出的是debug+的日志-->
</configuration>

然后生成的三种日志文件中的内容是完全一样的,都是按照debug+级别生成日志

写回答

2回答

翔仔

2018-07-06

同学好,你可以复用我的

<?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>
	<!-- 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.imooc.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>

我的是没有问题的

0
3
翔仔
回复
27Done
同学好,其实可以直接复制粘贴,然后看看和原先哪里有区别,程序不会出现灵异事件的,说1是1:)
2018-07-09
共3条回复

27Done

提问者

2018-07-06

补上我的测试类:

package com.zx.o2o.web.superadmin;

import com.zx.o2o.entity.Area;
import com.zx.o2o.service.AreaService;
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 java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
@RequestMapping("/superadmin")
public class AreaController {
    Logger logger = LoggerFactory.getLogger(AreaController.class);

    @Autowired
    private AreaService areaService;

    @RequestMapping("/listarea")
    @ResponseBody
    private Map<String,Object> listArea(){
        logger.info("=====strat=====");
        long stratTime = System.currentTimeMillis();
        Map<String,Object> modelMap = new HashMap<>();
        List<Area> areas = new ArrayList<>();
        try {
            areas = areaService.getAreaList();
            modelMap.put("rows",areas);
            modelMap.put("total",areas.size());
        }catch (Exception e){
            modelMap.put("success",false);
            modelMap.put("errMsg",e.toString());
        }
        logger.error("test error!");
        long endTime = System.currentTimeMillis();
        logger.debug("costTime:[{}ms]",endTime-stratTime);
        logger.info("=====end=====");
        return modelMap;
    }
}


0
0

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程