校园商铺-2Logback配置与使用-2Logback配置
logback配置文件加载顺序
logback:程序在运行的时候,会按照一定的顺序去加载logbook相关的配置文件。
如果我们在配置里面制定了logbackConfigurationFile这个属性,将使用这个属性的地址去寻找相关的配置文件,如
java-Dlogback.configurationFile=xxxx/xxx.xml
传入一个参数-DlogbackConfigurationFile并指定配置文件的路径,在启动的时候就会优先加载这个配置里面的路径
如果没有配置这个属性的话,将会加载classpath下的logback.grove文件。
如果也没找到logbook.grove这个文件,会加载同级目录下的logback_test.xml文件。
如果也没有,会加载classpath下的logback.xml文件。
如果上述的配置文件都没有找到:
- JDK≥1.6会调用ServiceLoad的去查找com.qos.logback.classic.spi.Configurator。在这个类上边硬编码响应的配置,就会调用这个类去做相应的配置了
- JDK<1.6,会调用com.qos.logback.classic.BasicConfiguration实现类,这个实现类的功能就是在控制台里面直接输出日志,即appender指定控制台
logback不做配置,也不会报错,只是日志,会直接输出到控制台当中了。
新建/src/main/resources/logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds"
debug="false">
<!-- 当scan的属性设置为true的时候,配置文件如果发生改变,该文件将会被重新加载。 -->
<!-- scanPeriod:检测配置文件是否有修改的时间间隔。默认1分钟,默认单位是毫秒 -->
<!-- debug如果设置为true,它将打印出logback内部的日志信息,实时查看logback的运行状态。因为logback很稳定了,因此设置为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">
<!-- 类似layout,但layout仅仅是将一个event时间转换成一个字符串的功能。encoder出了event时间转换成byte数组,还会将转换后的byte数组输出到文件中。即encoder既负责转换字符串,由负责保存 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!--debug -->
<appender name="debugAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 随着size的增大滚动出新的日志,或随着日期变化,滚出新的日志文件-->
<!--文件路径 -->
<file>${log.filePath}/debug.log</file>
<!-- 滚动策略 -->
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--随着日期的变化,非当日的日志会被打包成.gz文件 -->
<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><!-- 如果忽略onMismatch,level和onMatch也不能生效,将保存全部的日志。 -->
</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>
<!--warn -->
<appender name="warnAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--文件路径 -->
<file>${log.filePath}/warn.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名称 -->
<fileNamePattern>${log.filePath}/warn/warn.%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>WARN</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>
<logger name="com.csj2018.o2o" level="${log.level}"
additivity="true">
<!-- name需要关注那个package下的信息 -->
<!-- level:用来告诉logback,log仅记录那个level以上的信息 -->
<!-- additivity:当为true时,logger就会将父类root下的appender-ref放到logger里面来,即logger也支持在控制台输出相关的日志信息,并且它的level不是按照root指定的level输出日志信息
,在控制台将按照logger指定的level指定的level输出日志信息 -->
<!-- 业务里面,一个类只能对应一个logger,也就是说这个类的日志信息,要么在这个logger里面输出,要么是往root里面去写。由于我们指定了packageName,package下面所有的类都和logger是对象的,
只在这个logger里面输出 -->
<appender-ref ref="debugAppender" />
<appender-ref ref="infoAppender" />
<appender-ref ref="warnAppender" />
<appender-ref ref="errorAppender" />
</logger>
<root level="info">
<!-- 如果logger中的level没有指定,就会继承root下的level,仅输出info级别以上的信息 -->
<appender-ref ref="consoleAppender" />
</root>
</configuration>
校园商铺-2Logback配置与使用-2Logback配置的更多相关文章
- 校园电商项目4——SSM各项配置
步骤一:数据库连接文件 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/school_o2o?useUni ...
- SSM到Spring Boot从零开发校园商铺平台
项目目的 特别 由于准备春招,所以希望各位看客方便的话,能去github上面帮我Star一下项目 https://github.com/Draymonders/Campus-Shop emmm, 已经 ...
- .NET Core采用的全新配置系统[1]: 读取配置数据
提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义在这两个文 ...
- .NET Core采用的全新配置系统[7]: 将配置保存在数据库中
我们在<聊聊默认支持的各种配置源>和<深入了解三种针对文件(JSON.XML与INI)的配置源>对配置模型中默认提供的各种ConfigurationSource进行了深入详尽的 ...
- PHPStorm如何配置,phpstorm的mac配置文件目录
PHPStorm的配置分为2大类:项目配置和IDE配置. 项目配置(设置),主要是配置具体项目.IDE 配置(设置),通用的设置会应用到所有的项目上. 项目配置每个项目的配置存储在项目所在目录的 .i ...
- 两种交换机配置模式,以配置基于端口划分的VLAN为例
关于交换机的配置模式,大体上可以分为两类:其一以CISCO交换机为代表的配置模式,其二以Huawei.H3C交换机为代表的配置模式.其实这两种配置模式并没有本质的不同,只是配置的命令名称和配置方式存在 ...
- Tomcat中JVM内存溢出及合理配置及maxThreads如何配置(转)
来源:http://www.tot.name/html/20150530/20150530102930.htm Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚 ...
- BIND的进程一:DNS简单配置与的主从配置
DNS的简单配置和DNS的主从配置 摘要:DNS(Domain-Name Server) ,DNS的服务起到的作用就是名称解析,在网络通讯来说计算机与计算机是通过IP地址相互通信的, 当是IP地址 ...
- CCNA网络工程师学习进程(6)vlan相关协议的配置与路由器简单配置介绍
前面已经介绍了大部分与vlan技术相关的交换机的协议的配置,更深层次的还有STP协议和以太网端口聚合技术,接着还会简单介绍一下路由器的基本应用. (1)STP(Spanning-tre ...
- apache 虚拟主机详细配置:http.conf配置详解
apache 虚拟主机详细配置:http.conf配置详解 Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd. ...
随机推荐
- JS面向对象(二)---继承
一.面向对象的继承 1.解析:在原有对象的基础上,略作修改,得到一个新的对象,并且不影响原有对象的功能 2.如何添加继承---拷贝继承 属性:call 方法: for in /* 继承:子类不影响父类 ...
- 2019-9-18-WPF-客户端开发需要知道的触摸失效问题
title author date CreateTime categories WPF 客户端开发需要知道的触摸失效问题 lindexi 2019-09-18 15:30:38 +0800 2019- ...
- 2.Struts2配置文件
1.配置文件的加载顺序 0. 需要掌握 * 加载了哪些个配置文件(重点的) * 配置文件的名称是什么 * 配置文件的位置 * 配置文件的 ...
- 使用sql对比Mysql中数据库2个表结构
比较两个数据表的结构 SELECT column_name, max( CASE WHEN table_name = 'table1' AND table_schema = 'db1' THEN 'Y ...
- jq-demo-tab切换
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- HIVE的高级操作
二.视图 1.Hive 的视图和关系型数据库的视图区别 和关系型数据库一样,Hive 也提供了视图的功能,不过请注意,Hive 的视图和关系型数据库的数据还是有很大的区别: (1)只有逻辑视图,没有物 ...
- Hbase和Hive在大数据架构中处在不同位置
先放结论:Hbase和Hive在大数据架构中处在不同位置,Hbase主要解决实时数据查询问题,Hive主要解决数据处理和计算问题,一般是配合使用.一.区别:Hbase: Hadoop database ...
- win10 快速访问存在 2345Downloads 删除解决方案
有时候重装新系后统会发有很多自己不喜欢的捆绑程序,比如2345辣鸡浏览器 这个时候很多人会选择卸载,然后把文件夹位置删除 但是删除后会发现有一个地方一直还在那就是现快速访问的位置里面 这个位置由于卸载 ...
- 【Codeforces Round #429 (Div. 2) B】 Godsend
[Link]:http://codeforces.com/contest/841/problem/B [Description] 两个人轮流对一个数组玩游戏,第一个人可以把连续的一段为奇数的拿走,第二 ...
- 回滚树形dp(按dfs序dp)——hdu6035
本题前面的操作别的博客里都有.难点在于颜色ci的贡献,如何一次dfs求出答案 先来考虑如何在一次dfs中单独对颜色i进行计算 用遍历dfs序的方式,在深搜过程中,碰到带有颜色 i 的点 u,u每个颜色 ...