logback.xml模板详解
<?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模板详解的更多相关文章
- c3p0-config.xml模板详解
c3p0-config.xml模板详解 <c3p0-config> <default-config> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.De ...
- logback.xml配置详解
先附上本文分析用的例子: <?xml version="1.0" encoding="UTF-8" ?> <configuration> ...
- (转)Spring boot——logback.xml 配置详解(二)
文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 1 根节点<configuration>包含的属性 scan: 当此属性设置为t ...
- Spring boot——logback.xml 配置详解(二)
阅读目录 1 根节点包含的属性 2 根节点的子节点 文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 回到顶部 1 根节点<config ...
- 常用logback.xml配置详解
选择logback的理由 ==logback==与==log4j==的简单对比一下: 1.首先,对于同样的代码路径,==logback==使用起来更快. 2.==logback==原生实现了log4j ...
- logback.xml配置文件详解
越是老司机越会对日志重视. 如下配置实现了 1.日志文件使用相对路径输出. 2.从日期与文件大小两个纬度分割. 3.特定包与类的日志输出 ** 当存在多个name相同的logger时,逻辑不是很清楚 ...
- logback.xml 配置详解(转)
<?xml version="1.0" encoding="UTF-8"> <configuration> <!-- 设置控制台日 ...
- (六)logback.xml 配置详解
原文链接:https://www.cnblogs.com/taiyonghai/p/9290641.html,https://blog.csdn.net/A615883576/article/deta ...
- (转)Spring boot——logback.xml 配置详解(四)<filter>
文章转载自:http://aub.iteye.com/blog/1101260,在此对作者的辛苦表示感谢! 1 filter的使用 <filter>: Logback的过滤器基于三值逻辑( ...
随机推荐
- ADO.NET教程(2)实现增删查改
声明一个类,在类中实现增删查改的方法 public class AdoNet { //声明连接字符串 public string Sqlstr = "data source={0};data ...
- js把数据处理成钱的格式
1.var Rmoney = parseFloat(money).toFixed(2);//把money处理成保存2位小数的格式
- css rgba/hsla知识点讲解及半透明边框
一.RGBA(R,G,B,A) 参数: R:红色值.正整数 | |百分数 G:绿色值.正整数 | |百分数 B:蓝色值.正整数 | |百分数 A:Alpha透明度.取值0~1之间. 说明:此色彩模式与 ...
- Spring应用开发常见规范
1.Spring应用开发常见包命名规范 controller:控制器 service:服务-接口 impl:服务-实现 integration sao:调用其他模块的,把feign的调用放到这个下面 ...
- 06_Jedis完成MySQL的条件查询案例
[概述] 假设现在有一个User表,其中有id,name,age,sex等字段,完成如下要求的SQL语句为: 1.查找所有age=18 的User ; 2.查找所有sex="M"( ...
- Android 判断当前Fragment是否可见(Visible)
判断当前Fragment是否可见 public abstract class BaseFragment extends Fragment { /** Fragment当前状态是否可见 */ prote ...
- 基本算法思想Java实现的详细代码
基本算法思想Java实现的详细代码 算法是一个程序的灵魂,一个好的算法往往可以化繁为简,高效的求解问题.在程序设计中算法是独立于语言的,无论使用哪一种语言都可以使用这些算法,本文笔者将以Java语言为 ...
- Android 自定义圆形图表
<com...SignChartView android:id="@+id/signChart" android:layout_width="265dp" ...
- ubuntu 18 下配置 WebStorm 编译 sass
ubuntu 18 下配置 WebStorm 编译 scss 标签(空格分隔): IDE 安装Ruby: sudo apt-get install ruby ruby -v ruby 2.5.1p57 ...
- npm 安装axios和使用增删改查
1:安装axios(建议安装淘宝镜像) npm install axios 2:项目导入 npm install --save axios vue-axios 3:页面导入 import axios ...