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

 <!-- 配置文件每隔1分钟,就检查更新 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false" >
<!-- 定义参数常量,便于后面直接用${name}来获取value值 -->
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%-5level] %logger{50} - %msg%n"/>
<property name="log.filePath" value="${catalina.base}/logs/webapps"/>
<property name="log.maxHistory" value="30"/> <!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 过去使用layout,现在都推荐使用encoder
13 作用一:将日志信息转换(格式化)为字符串
14 作用二:然后写入到文件中-->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender> <!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日志输出到文件 -->
<!-- 1.打印debug级别日志的设置 -->
<appender name="debugAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 例如当天,也就是今天是2019-2-19,那么在这天生成的日志文件路径为${log.filePath}/debug.log
25 接着到了明天,也就是2019-2-20,这天生成的日志文件路径为${log.filePath}/debug.log,
26 但昨天2019-2-19,生成的日志文件路径就变为${log.filePath}/debug/debug-2019-2-19.log.gz(压缩文件) --> <!-- 当天生成的日志文件的路径 -->
<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>
<!-- 最大历史保存文件的数量,只保存最近30天的日志文件,超出的会被删除-->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<!-- 过去使用layout,现在都推荐使用encoder
作用一:将日志信息转换(格式化)为字符串
作用二:然后写入到文件中-->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 过滤掉非debug级别的信息 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>debug</level>
<onMatch>ACCEPT</onMatch>
<!-- 作用是拒绝写入所有与<level>不匹配的日志信息,
49 也就是非debug级别的日志信息都不会被写入到日志文件中 -->
<onMismatch>DENY</onMismatch>
</filter>
</appender> <!-- 2.打印info级别日志的设置 -->
<appender name="infoAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 例如当天,也就是今天是2019-2-19,那么在这天生成的日志文件路径为${log.filePath}/info.log
接着到了明天,也就是2019-2-20,这天生成的日志文件路径为${log.filePath}/info.log,
但昨天2019-2-19,生成的日志文件路径就变为${log.filePath}/info/info-2019-2-19.log.gz(压缩文件) --> <!-- 当天生成的日志文件的路径 -->
<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>
<!-- 最大历史保存文件的数量,只保存最近30天的日志文件,超出的会被删除-->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<!-- 过去使用layout,现在都推荐使用encoder
作用一:将日志信息转换(格式化)为字符串
作用二:然后写入到文件中-->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 过滤掉非info级别的信息 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<!-- 作用是拒绝写入所有与<level>不匹配的日志信息,
也就是非info级别的日志信息都不会被写入到日志文件中 -->
<onMismatch>DENY</onMismatch>
</filter>
</appender> <!-- 3.打印error级别日志的设置 -->
<appender name="errorAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 例如当天,也就是今天是2019-2-19,那么在这天生成的日志文件路径为${log.filePath}/error.log
接着到了明天,也就是2019-2-20,这天生成的日志文件路径为${log.filePath}/error.log,
但昨天2019-2-19,生成的日志文件路径就变为${log.filePath}/error/error-2019-2-19.log.gz(压缩文件) --> <!-- 当天生成的日志文件的路径 -->
<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>
<!-- 最大历史保存文件的数量,只保存最近30天的日志文件,超出的会被删除-->
<maxHistory>${log.maxHistory}</maxHistory>
</rollingPolicy>
<!-- 过去使用layout,现在都推荐使用encoder
作用一:将日志信息转换(格式化)为字符串
作用二:然后写入到文件中-->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 过滤掉非error级别的信息 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<!-- 作用是拒绝写入所有与<level>不匹配的日志信息,
也就是非error级别的日志信息都不会被写入到日志文件中 -->
<onMismatch>DENY</onMismatch>
</filter>
</appender> <!-- 监听com.imooc.o2o包下所有类产生的日志信息
不设置additivity属性,那么默认additivity = true,表示会继承父级(在这里它的父级只有root一个),
也就是会将日志信息也输出在控制台,但级别会覆盖父级的级别,也就是在控制台会输出debug级别及以上的日志信息 -->
<logger name="com.imooc.o2o" level="debug">
<!-- 表示按照debugAppender的设置去打印日志 -->
<appender-ref ref="debugAppender"/>
<!-- 表示按照infoAppender的设置去打印日志 -->
<appender-ref ref="infoAppender"/>
<!-- 表示按照errorAppender的设置去打印日志 -->
<appender-ref ref="errorAppender"/>
</logger> <!-- 也是一种<logger>,是所有<logger>的父级 -->
<!-- 不设置additivity属性,或者设置additivity = true的<logger>,会继承root的子标签<appender-ref ref="console" />的设置,
将它自己设置的level属性级别及以上的日志打印到控制台 -->
<root level="info">
<!-- 表示按照console的设置去输出日志到控制台 -->
<appender-ref ref="console" />
</root> </configuration>

注意:

1. ${catalina.base}表示tomcat的工作目录,具体的路径可以通过以下两种方式

   a.Tomcat启动时,控制台最先打印的信息中,在前几行会看到 catalina.base ,它后面的路径就是当前项目的tomcat的工作目录
  b.一般都在此目录中可以找到所有已部署项目的Tomcat的工作目录:
C:\Users\0(这是电脑的本机账号)\
.IntelliJIdea2018.2(这是Tomcat集成的IDE工具,我使用的是IDEA)\
system\tomcat\Unnamed_o2o(项目名) 2. logback.xml文件的目录位置 maven项目,请放在classpath下,也就是src/main/resource文件夹下,否则系统解析不到logback.xml文件 3. 需要的jar包
 <!--日志logback,默认scope是compile,也就是从编译时就起作用了-->
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>

												

logback.xml模板详解的更多相关文章

  1. c3p0-config.xml模板详解

    c3p0-config.xml模板详解 <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.De ...

  2. logback.xml配置详解

    先附上本文分析用的例子: <?xml version="1.0" encoding="UTF-8" ?> <configuration> ...

  3. (转)Spring boot——logback.xml 配置详解(二)

    文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 1 根节点<configuration>包含的属性 scan: 当此属性设置为t ...

  4. Spring boot——logback.xml 配置详解(二)

    阅读目录 1 根节点包含的属性 2 根节点的子节点 文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 回到顶部 1 根节点<config ...

  5. 常用logback.xml配置详解

    选择logback的理由 ==logback==与==log4j==的简单对比一下: 1.首先,对于同样的代码路径,==logback==使用起来更快. 2.==logback==原生实现了log4j ...

  6. logback.xml配置文件详解

    越是老司机越会对日志重视. 如下配置实现了 1.日志文件使用相对路径输出. 2.从日期与文件大小两个纬度分割. 3.特定包与类的日志输出 ** 当存在多个name相同的logger时,逻辑不是很清楚 ...

  7. logback.xml 配置详解(转)

    <?xml version="1.0" encoding="UTF-8"> <configuration> <!-- 设置控制台日 ...

  8. (六)logback.xml 配置详解

    原文链接:https://www.cnblogs.com/taiyonghai/p/9290641.html,https://blog.csdn.net/A615883576/article/deta ...

  9. (转)Spring boot——logback.xml 配置详解(四)<filter>

    文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 1 filter的使用 <filter>: Logback的过滤器基于三值逻辑( ...

随机推荐

  1. c# 判断是否是DICOM文件

    public bool isDicom(string filename) { FileStream fs = File.OpenRead(filename); ]; fs.Read(data, , d ...

  2. 纯CSS的三角符号

    项目中经常用到三角形,现在给大家讲下用纯CSS写的下三角实心图形 .triangle{ border-width: 5px 4px 0 4px; border-color: #454A7B trans ...

  3. sort遇到的问题

    var arr = [2,10,6,9,7,8]; var arr1 = arr.sort(); var arr2 = arr.sort(function(a,b){ if (a>b){ ret ...

  4. php有经纬度计算距离

    /** *  @desc 根据两点间的经纬度计算距离 *  @param float $lat 纬度值 *  @param float $lng 经度值 */  function getDistanc ...

  5. overflow:hidden的用法

    overflow:hidden是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很了解. <%@ Page Language="C#& ...

  6. eclipse中手动设置library,选择编译工具方法

    target=android-25sdk.buildtools=25.0.2 target=android-26android.library=falseandroid.library.referen ...

  7. SpringBoot-mvn插件

    在maven projects中有一组springboot的插件 六个选择: 0.build-info:Generate a build-info.properties file based the ...

  8. Informatica 9.1.0 Domain地址变化修改

    由于公司机房的变动,infa所连数据库的IP地址变化,致使INFA不能启动.经过查找资料终于解决,现分享给大家,解决方法如下: 1.查看日志路径: Informatica/9.1.0/tomcat/l ...

  9. PHP腾讯与百度坐标转换

    function coordinate_switch($a,$b){//百度转腾讯坐标转换 $a = Latitude , $b = Longitude $x = (double)$b - 0.006 ...

  10. vue.js--基础事件定义,获取数据,执行方法传值

    <template> <div id="app"> <h1>{{ msg }}</h1> <br> <button ...