⽇志框架logback配置⽂件配置(转载)
1
spring boot内部使⽤来记录⽇志,但也保留外部接⼝可以让⼀些⽇志框架来进⾏实现,例如Java Util Logging,Log4J2还有Logback。如果你想⽤某⼀种⽇志框架来进⾏实现的话,就必须先配置,默认情况下,使⽤Logback作为⽇志实现的框架。
1.1 配置控制台⽇志的debug
默认情况下,spring boot ERROR, WARN 还有INFO,如果你想要打印debug级别的⽇志,可以通过application.properites配置debug=true debug=true
1.2 在⽣产环境环境下,你可以通过命令⾏进⾏配置⽇志的debug
java -jar C:\Users\Administrator\Desktop\xx\demo.jar --debug
1.3 配置logging.level.*
=INFO
springframework.web=DEBUG
hibernate=ERROR
1.4
默认情况下spring boot application.properites⽂件中配置logging.file⽂件名称和logging.path⽂件路径,将⽇志输出到⽂件中logging.path=F:\\demo
logging.file=demo.log
=info
这⾥需要注意⼏点:
1. 这⾥若不配置具体的包的⽇志级别,⽇志⽂件信息将为空
2. 若只配置logging.path,那么将会在F:\demo⽂件夹⽣成⼀个⽇志⽂件为spring.log(ps:该⽂件名是固定的,不能更改)。如果path路径不存在,会⾃动创建该⽂件夹
3. 若只配置logging.file,那将会在项⽬的当前路径下⽣成⼀个demo.log⽇志⽂件。这⾥可以使⽤绝对路径如,会⾃动在e盘下创建⽂件夹和相应的⽇志⽂件。
logging.file=e:\\demo\\demo.log
4. logging.path和logging.file同时配置,不会在这个路径有F:\demo\demo.log⽇志⽣成,logging.path和logging.file不会进⾏叠加(要注意)
5. logging.path和logging.file的value都可以是相对路径或者绝对路径
这就是基础的⽇志配置,可以直接在配置,我们还可以在classpath路径下,通过定义具体的⽇志⽂件来配置——l
2 logback
2.1 logback
Logback是由log4j logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的⼀个改良版本。此外logback-classic完整实现使你可以很⽅便地更换成其它⽇志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet 容器集成提供通过Http来访问⽇志的功能。 Logback是要与SLF4J结合起来⽤两个组件的官⽅⽹站如下:
本⽂章⽤到的组件如下:请⾃⾏到官⽅⽹站下载!
logback-access-1.0.0.jar
logback-classic-1.0.0.jar
logback-core-1.0.0.jar
slf4j-api-1.6.0.jar
maven配置
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.11</version>
</dependency>
这样依赖包全部⾃动下载了!
ps:在spring boot项⽬中,会默认引⼊logback包。
2.2 logback取代 log4j
Logback和log4j是⾮常相似的,如果你对log4j logback很快就会得⼼应⼿。下⾯列了logback相对于log4j的⼀些优点:
1、更快的实现 Logback的内核重写了,在⼀些关键执⾏路径上性能提升10倍以上。⽽且logback不仅性能提升了,初始化内存加载也更⼩了。
2、⾮常充分的测试 Logback经过了⼏年,数不清⼩时的测试。Logback的测试完全不同级别的。在作者的观点,这是简单重要的原因选择logback⽽不是log4j。
3、Logback-classic⾮常⾃然实现了SLF4j Logback-classic实现了 SLF4j。在使⽤SLF4j中,你都感觉不到logback-classic。⽽且因为logback-classic⾮常⾃然地实现了
SLF4J,所以切换到log4j或者其他,⾮常容易,只需要提供成另⼀个jar包就OK,根本不需要去动那些通过SLF4JAPI实现的代码。
4、⾮常充分的⽂档官⽅⽹站有两百多页的⽂档。
5、⾃动重新加载配置⽂件当配置⽂件修改了,Logback-classic能⾃动重新加载配置⽂件。扫描过程快且安全,它并不需要另外创建⼀个扫描线程。这个技术充分保证了应⽤
程序能跑得很欢在JEE环境⾥⾯。
6、Lilith Lilith是log事件的观察者,和log4j的chainsaw类似。⽽lilith还能处理⼤数量的log数据。
7、谨慎的模式和⾮常友好的恢复在谨慎模式下,多个FileAppender实例跑在多个JVM下,能够安全地写道同⼀个⽇志⽂件。RollingFileAppender会有些限制。Logback的
FileAppender和它的⼦类包括 RollingFileAppender能够⾮常友好地从I/O异常中恢复。
8、配置⽂件可以处理不同的情况开发⼈员经常需要判断不同的Logback配置⽂件在不同的环境下(开发,测试,⽣产)。⽽这些配置⽂件仅仅只有⼀些很⼩的不同,可以通
过,和来实现,这样⼀个配置⽂件就可以适应多个环境。
9、Filters(过滤器)有些时候,需要诊断⼀个问题,需要打出⽇志。在log4j,只有降低⽇志级别,不过这样会打出⼤量的⽇志,会影响应⽤性能。在Logback,你可以继续
保持那个⽇志级别⽽除掉某种特殊情况,如alice这个⽤户登录,她的⽇志将打在DEBUG级别⽽其他⽤户可以继续打在WARN级别。要实现这个功能只需加4⾏XML配置。可以参考MDCFIlter 。
10、SiftingAppender(⼀个⾮常多功能的Appender)它可以⽤来分割⽇志⽂件根据任何⼀个给定的运⾏参数。如,SiftingAppender能够区别⽇志事件跟进⽤户的Session,
然后每个⽤户会有⼀个⽇志⽂件。
11、⾃动压缩已经打出来的log RollingFileAppender在产⽣新⽂件的时候,会⾃动压缩已经打出来的⽇志⽂件。压缩是个异步过程,所以甚⾄对于⼤的⽇志⽂件,在压缩过程
中应⽤不会受任何影响。
12、堆栈树带有包版本 Logback在打出堆栈树⽇志时,会带上包的数据。
13、⾃动去除旧的⽇志⽂件通过设置TimeBasedRollingPolicy或者SizeAndTimeBasedFNATP的maxHistory属性,你可以控制已经产⽣⽇志⽂件的最⼤数量。如果设置
maxHistory 12,那那些log⽂件超过12个⽉的都会被⾃动移除。
总之,logback⽐log4j太优秀了,让我们的应⽤全部建⽴logback上吧!
2.3 Logback的配置介绍
1、Logger、appender及layout
Logger作为⽇志的记录器,把它关联到应⽤的对应的context上后,主要⽤于存放⽇志对象,也可以定义⽇志类型、级别。
Appender主要⽤于指定⽇志输出的⽬的地,⽬的地可以是控制台、⽂件、远程套接字服务器、 MySQL、 PostreSQL、 Oracle和其他数据库、 JMS和远程UNIX Syslog守护进程等。
Layout 负责把事件转换成字符串,格式化的⽇志信息的输出。
2、logger context
各个logger 都被关联到⼀个 LoggerContext,LoggerContext负责制造logger,也负责以树结构排列各 logger。其他所有logger也通过org.slf4j.LoggerFactory 类的静态⽅法getLogger取得。 getLogger⽅法以 logger 名称为参数。⽤同⼀名字调⽤Logger ⽅法所得到的永远都是同⼀个logger对象的引⽤。
3、有效级别及级别的继承
Logger 可以被分配级别。级别包括:TRACE、DEBUG、INFO、WARN 和 ERROR,定义于 ch.qos.logback.classic.Level类。如果 logger没有被分配级别,那么它将从有被分配级别的最近的祖先那⾥继承级别。root logger 默认级别是 DEBUG。
4、打印⽅法与基本的选择规则
打印⽅法决定记录请求的级别。例如,如果 L 是⼀个 logger 实例,那么,语句 L.info("..")是⼀条级别为 INFO 的记录语句。记录请求的级别在⾼于或等于其 logger 的有效级别时被称为被启⽤,否则,称为被禁⽤。记录请求级别为 p,其logger的有效级别为 q,只有则当 p>=q时,该请求才会被执⾏。
该规则是 logback 的核⼼。级别排序为: TRACE < DEBUG < INFO < WARN < ERROR。
3 logback
3.1 Logback
如果配置⽂件 l 都不存在,那么 logback 默认地会调⽤BasicConfigurator ,创建⼀个最⼩化配置。最⼩化配置由⼀个关联到根 logger 的ConsoleAppender 组成。输出⽤模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 的 PatternLayoutEncoder 进⾏格式化。root logger 默认级别
是 DEBUG。
1、Logback的配置⽂件
Logback 配置⽂件的语法⾮常灵活。正因为灵活,所以⽆法⽤ DTD 或 XML schema 进⾏定义。尽管如此,可以这样描述配置⽂件的基本结构:以<configuration>开头,后⾯有零个或多个<appender>元素,有零个或多个<logger>元素,有最多⼀个<root>元素。
2、Logback默认配置的步骤
(1). 尝试在 classpath 下查⽂件 l;
(2). 如果⽂件不存在,则查⽂件 l;
(3). 如果两个⽂件都不存在,logback ⽤ Bas icConfigurator ⾃动对⾃⼰进⾏配置,这会导致记录输出到控制台。
3、l ⽂件
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2010-2011 The myBatis Team
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<configuration debug="false">
<!--定义⽇志⽂件的存储地址勿在 LogBack 的配置中使⽤相对路径-->
<property name="LOG_HOME" value="/home" />
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.ConsoleAppender">
<encoder class="ch.qos.der.PatternLayoutEncoder">
<!--格式化输出:%d表⽰⽇期,%thread表⽰线程名,%-5level:级别从左显⽰5个字符宽度%msg:⽇志消息,%n是换⾏符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 按照每天⽣成⽇志⽂件 -->
<appender name="FILE" class="ch.olling.RollingFileAppender">
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<!--⽇志⽂件输出的⽂件名-->
<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--⽇志⽂件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.der.PatternLayoutEncoder">
<!--格式化输出:%d表⽰⽇期,%thread表⽰线程名,%-5level:级别从左显⽰5个字符宽度%msg:⽇志消息,%n是换⾏符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--⽇志⽂件最⼤的⼤⼩-->
<triggeringPolicy class="ch.olling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
<logger name="pe.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="pe.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="ine.QueryParameters" level="DEBUG" />
<logger name="ine.query.HQLQueryPlan" level="DEBUG" />
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<!-- ⽇志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<!--⽇志异步到数据库 -->
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<!--⽇志异步到数据库 -->
<connectionSource class="ch.db.DriverManagerConnectionSource">
<!--连接池 -->
<dataSource class="hange.v2.c3p0.ComboPooledDataSource">
<driverClass&sql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
<user>root</user>
<password>root</password>
</dataSource>
</connectionSource>
</appender>
</configuration>
3.2 在程序⽤引⽤
package com.stu.system.action;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BlogAction{
//定义⼀个全局的记录器,通过LoggerFactory获取
private final static Logger logger = Logger(BlogAction.class);
/**
* @param args
*/
public static void main(String[] args) {
logger.info("logback 成功了");
<("logback 成功了");
}
}
4 sts
4.1
核⼼就是让的控制台⽀持ANSI Escape Color——⼀种国际标准,使⽤特定字符表⽰颜⾊。即让Eclipse的Console对表⽰颜⾊的特定字符进⾏转义(Escape),⽽不要直接输出。
⾸先让sts⽀持ANSI
重启IDE,如下所⽰则表⽰成功
application.properties中设置spring.abled参数来⽀持。
NEVER:禁⽤ANSI-colored输出(默认项)
DETECT:会检查终端是否⽀持ANSI,是的话就采⽤彩⾊输出(推荐项)
ALWAYS:总是使⽤ANSI-colored格式输出,若终端不⽀持的时候,会有很多⼲扰信息,不推荐使⽤
注意:这⾥⾃⼰在测试时候,只有设置为如下参数时,彩⾊⽇志有效。
spring.abled=ALWAYS
我使⽤的是logback,只需要将下⾯代码插⼊到l⽂件,并在appender-ref指定CONSOLE即可,具体实现代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义⽇志⽂件的存储地址勿在 LogBack 的配置中使⽤相对路径-->
<property name="LOG_HOME" value="F://slog" />
<!-- 彩⾊⽇志 -->
<!-- 彩⾊⽇志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩⾊⽇志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(% <!-- Console 输出设置 -->
<appender name="STDOUT" class="ch.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 不带彩⾊的⽇志在控制台输出时候的设置 -->
<!-- <appender name="STDOUT" class="ch.ConsoleAppender">
<encoder class="ch.qos.der.PatternLayoutEncoder">
格式化输出:%d表⽰⽇期,%thread表⽰线程名,%-5level:级别从左显⽰5个字符宽度%msg:⽇志消息,%n是换⾏符
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender> -->
<!-- 按照每天⽣成⽇志⽂件 -->
<appender name="FILE" class="ch.olling.RollingFileAppender">
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<!--⽇志⽂件输出的⽂件名-->
<FileNamePattern>${LOG_HOME}/springboot00.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--⽇志⽂件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.der.PatternLayoutEncoder">
<!--格式化输出:%d表⽰⽇期,%thread表⽰线程名,%-5level:级别从左显⽰5个字符宽度%msg:⽇志消息,%n是换⾏符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--⽇志⽂件最⼤的⼤⼩-->
<triggeringPolicy class="ch.olling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- show parameters for hibernate sql 专为 Hibernate 定制 -->
<!-- <logger name="pe.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="pe.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="ine.QueryParameters" level="DEBUG" />
<logger name="ine.query.HQLQueryPlan" level="DEBUG" /> -->
<!--myibatis log configure-->
<!-- <logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/> -->
<!-- ⽇志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
<!--⽇志异步到数据库 -->
<!-- <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
⽇志异步到数据库
<connectionSource class="ch.db.DriverManagerConnectionSource">
连接池
<dataSource class="hange.v2.c3p0.ComboPooledDataSource">
<driverClass&sql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
<user>root</user>
<password>root</password>
</dataSource>
</connectionSource>
</appender> -->
</configuration>
效果如下:
l
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--
说明:
1、⽇志级别及⽂件
⽇志记录采⽤分级记录,级别与⽇志⽂件名相对应,不同级别的⽇志信息记录到不同的⽇志⽂件中
例如:error级别记录到log_error_xxx.log或log_error.log(该⽂件为当前记录的⽇志⽂件),⽽log_error_xxx.log为归档⽇志,
⽇志⽂件按⽇期记录,同⼀天内,若⽇志⽂件⼤⼩等于或⼤于2M,则按0、1、2...顺序分别命名
例如log-level-2013-12-21.0.log
其它级别的⽇志也是如此。
2、⽂件路径
若开发、测试⽤,在Eclipse中运⾏项⽬,则到Eclipse的安装路径查logs⽂件夹,以相对路径../logs。
若部署到Tomcat下,则在Tomcat下的logs⽂件中
3、Appender
FILEERROR对应error级别,⽂件名以log-error-xxx.log形式命名
FILEWARN对应warn级别,⽂件名以log-warn-xxx.log形式命名
FILEINFO对应info级别,⽂件名以log-info-xxx.log形式命名
FILEDEBUG对应debug级别,⽂件名以log-debug-xxx.log形式命名
stdout将⽇志信息输出到控制上,为⽅便开发测试使⽤
-->
<contextName>SpringBootDemo</contextName>
<property name="LOG_PATH" value="D:\\JavaWebLogs" />
<!--设置系统⽇志⽬录-->
<property name="APPDIR" value="SpringBootDemo" />
<!-- ⽇志记录器,⽇期滚动记录 -->
<appender name="FILEERROR" class="ch.olling.RollingFileAppender">
<!-- 正在记录的⽇志⽂件的路径及⽂件名 -->
<file>${LOG_PATH}/${APPDIR}/log_error.log</file>
<!-- ⽇志记录器的滚动策略,按⽇期,按⼤⼩记录 -->
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<!-- 归档的⽇志⽂件的路径,例如今天是2013-12-21⽇志,当前写的⽇志⽂件路径为file节点指定,可以将此⽂件与file指定⽂件路径设置为不同路径,从⽽将当前⽇志⽂件或归档⽇志⽂件置不同的⽬录。
⽽2013-12-21的⽇志⽂件在由fileNamePattern指定。%d{yyyy-MM-dd}指定⽇期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按⽇志记录之外,还配置了⽇志⽂件不能超过2M,若超过2M,⽇志⽂件会以索引0开始,
命名⽇志⽂件,例如log-error-2013-12-21.0.log -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.olling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加⽅式记录⽇志 -->
<append>true</append>
<!-- ⽇志⽂件的格式 -->
<encoder class="ch.qos.der.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 此⽇志⽂件只记录info级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- ⽇志记录器,⽇期滚动记录 -->
<appender name="FILEWARN" class="ch.olling.RollingFileAppender">
<!-- 正在记录的⽇志⽂件的路径及⽂件名 -->
<file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
<!-- ⽇志记录器的滚动策略,按⽇期,按⼤⼩记录 -->
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<!-- 归档的⽇志⽂件的路径,例如今天是2013-12-21⽇志,当前写的⽇志⽂件路径为file节点指定,可以将此⽂件与file指定⽂件路径设置为不同路径,从⽽将当前⽇志⽂件或归档⽇志⽂件置不同的⽬录。
⽽2013-12-21的⽇志⽂件在由fileNamePattern指定。%d{yyyy-MM-dd}指定⽇期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按⽇志记录之外,还配置了⽇志⽂件不能超过2M,若超过2M,⽇志⽂件会以索引0开始,
命名⽇志⽂件,例如log-error-2013-12-21.0.log -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.olling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加⽅式记录⽇志 -->
<append>true</append>
<!-- ⽇志⽂件的格式 -->
<encoder class="ch.qos.der.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 此⽇志⽂件只记录info级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>warn</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- ⽇志记录器,⽇期滚动记录 -->
<appender name="FILEINFO" class="ch.olling.RollingFileAppender">
<!-- 正在记录的⽇志⽂件的路径及⽂件名 -->
<file>${LOG_PATH}/${APPDIR}/log_info.log</file>
<!-- ⽇志记录器的滚动策略,按⽇期,按⼤⼩记录 -->
mysql下载jar包<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<!-- 归档的⽇志⽂件的路径,例如今天是2013-12-21⽇志,当前写的⽇志⽂件路径为file节点指定,可以将此⽂件与file指定⽂件路径设置为不同路径,从⽽将当前⽇志⽂件或归档⽇志⽂件置不同的⽬录。
⽽2013-12-21的⽇志⽂件在由fileNamePattern指定。%d{yyyy-MM-dd}指定⽇期格式,%i指定索引 -->
<fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按⽇志记录之外,还配置了⽇志⽂件不能超过2M,若超过2M,⽇志⽂件会以索引0开始,
命名⽇志⽂件,例如log-error-2013-12-21.0.log -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.olling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加⽅式记录⽇志 -->
<append>true</append>
<!-- ⽇志⽂件的格式 -->
<encoder class="ch.qos.der.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 此⽇志⽂件只记录info级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="STDOUT" class="ch.ConsoleAppender">
<!--encoder 默认配置为PatternLayoutEncoder-->
<encoder>
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!--此⽇志appender是为开发使⽤,只配置最底级别,控制台输出的⽇志级别是⼤于或等于此级别的⽇志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
</appender>
<logger name="org.springframework" level="WARN" />
<logger name="org.hibernate" level="WARN" />
<!-- ⽣产环境下,将此级别配置为适合的级别,以免⽇志⽂件太多或影响程序性能 -->
<root level="INFO">
<appender-ref ref="FILEERROR" />
<appender-ref ref="FILEWARN" />
<appender-ref ref="FILEINFO" />
<!-- ⽣产环境将请stdout,testfile去掉 -->
<appender-ref ref="STDOUT" />
</root>
</configuration>
如果您觉得阅读本⽂对您有帮助,请点⼀下“推荐”按钮,让更多的⼈能够享受到获取知识的快乐!因为本⼈初⼊职场,鉴于⾃⾝阅历有限,所以本博客内容⼤部分来源于⽹络中已有知识的汇总,欢迎各位
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论