logback-spring.xml配置及说明_resetjul_koney·C的博客-程序员秘密

技术标签: JAVA  spring  java  

<?xml version="1.0" encoding="UTF-8"?> <!--debug 要不要打印 logback内部日志信息,true则表示要打印。建议开启--> <!--scan 配置发送改变时,要不要重新加载--> <configuration debug="false" scan="true" scanPeriod="40 seconds">
    <!--注意: logback.xml在单体中只为了做测试使用,未来会换成log4j2,课程最后几章也会讲到log4j2及log4j2的相比logback的优势
-->
    <!--定义参数,后面可以通过${log.base}使用-->
    <property name="log.base" value="logs"/>

    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <resetJUL>true</resetJUL>
    </contextListener>

    <!--ConsoleAppender 用于在屏幕上输出日志-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}:%line] - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--定义了一个过滤器,在LEVEL之下的日志输出不会被打印出来-->
        <!--这里定义了DEBUG,也就是控制台不会输出比ERROR级别小的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <append>true</append>
        <!--定义日志滚动的策略TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,
          既负责滚动也负责出发滚动。有以下子节点:<fileNamePattern>:必要节点,包含文件名及“%d”转换符,
          “%d”可以包含一个java.text.SimpleDateFormat指定的时间格式,如:%d{yyyy-MM}。如果直接使用 %d-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--定义文件滚动时的文件名的格式-->
            <fileNamePattern>${log.base}/Trace-error.%d{yyyy-MM-dd}.log
            </fileNamePattern>
            <!-- 保留10天 -->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--每个日志文件最大10MB-->
            <maxFileSize>10MB</maxFileSize>
        </triggeringPolicy>
        <!-- encoder 默认配置为PatternLayoutEncoder -->
        <!--定义控制台输出格式-->
        <encoder charset="UTF-8">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{50}:%line] - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <appender name="INFO_FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${
    log.base}/Trace-info.%d{
    yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--每个日志文件最大10MB-->
            <maxFileSize>10MB</maxFileSize>
        </triggeringPolicy>
        <encoder charset="UTF-8">
            <pattern>%d{
    yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{
    50}:%line] - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="WARN_FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${
    log.base}/Trace-warn.%d{
    yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--每个日志文件最大10MB-->
            <maxFileSize>10MB</maxFileSize>
        </triggeringPolicy>
        <encoder charset="UTF-8">
            <pattern>%d{
    yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{
    50}:%line] - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="DEBUG_FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${
    log.base}/Trace-DEBUG.%d{
    yyyy-MM-dd}.log
            </fileNamePattern>
            <maxHistory>1</maxHistory>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--每个日志文件最大10MB-->
            <maxFileSize>5MB</maxFileSize>
        </triggeringPolicy>
        <encoder charset="UTF-8">
            <pattern>%d{
    yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{
    50}:%line] - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--encoder 默认配置为PatternLayoutEncoder-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level -&#45;&#45; [%thread] %logger Line:%-3L - %msg%n</pattern>-->
            <charset>UTF-8</charset>
        </encoder>
        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="com.chy.trace.filter.LogFilter"/>
    </appender>



    <!--通过 LoggerFactory.getLogger("mytest") 可以获取到这个logger-->
    <!--由于这个logger自动继承了root的appender,root中已经有FILE-ERROR的appender了,自己这边又引入了FILE-ERROR的appender-->
    <!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
    <!--additivity表示要不要使用rootLogger配置的appender进行输出-->
    <logger name="com.chy.trace.dao" level="INFO" additivity="false">
        <appender-ref ref="INFO_FILE"/>
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="STDOUT" />
    </logger>

    <!--root是默认的logger 这里设定输出级别是debug-->
    <root level="INFO">
        <!--定义了四个appender,日志会通过往这四个appender里面写-->
        <appender-ref ref="STDOUT" />
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="ERROR_FILE" />
        <appender-ref ref="WARN_FILE" />
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="DEBUG_FILE" />
    </root>

</configuration>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43179501/article/details/106239052

智能推荐

细胞转染的操作步骤及注意事项_科研小行星的博客-程序员秘密

转染(Transfection) ,是将外源性基因导入细胞内的一种专门技术。随着基因与蛋白功能研究的深入,转染目前已成为实验室工作中经常涉及的基本方法。转染大致可分为物理介导、化学介导和生物介导三类途径。一转染的类型1)根据导入的核酸存在于宿主细胞的时间长短,可以分为瞬转和稳转。2)根据转染方式可以分为化学,生物,物理方法。文章剩余内容&lt;&lt;&lt;&lt;...

angular 1.6 $http.get(...).success is not a function 解决办法_李奕锋的博客-程序员秘密

angular 1.6 $http.get(...).success is not a function 解决办法

游戏开发设计模式(一):单例模式_游戏开发模式_给贝拉嘉晚饭的博客-程序员秘密

单例模式,正如它的名字一样,它的目标是确保自身的单一性,即在游戏运行时,始终只存在该类的一个实例。一旦出现第二个实例,则需要被立即摧毁。单例模式的优点:可以全局访问。用单例模式创建的资源可以被全局访问。 控制并发:该模式可用于限制对共享资源的并发访问。单例模式的缺点:难以进行单元测试。单例模式通常作为管理类来管理游戏中的其他组件,过度使用,会使各个管理类之间相互依赖,使得难以对某一模块进行单独测试。 会导致懒惰和不好的编程习惯。由于单例模式可以轻松的在任何地方访问所有内容,它提供的简单性可

23-黑马程序员------OC 语言学习笔记---内存管理_weixin_34205826的博客-程序员秘密

黑马程序员------&lt;a href="http://www.itheima.com" target="blank"&gt;Java培训、Android培训、iOS培训、.Net培训&lt;/a&gt;、期待与您交流! -------对于面向对象的变成语言,程序需要不断地创建对象。初始,创建的所有程序通常都有指针指向它,程序可能需要访问这些对象的实例变量或调用这些对象的方法,随着程序的不...

二分匹配-邻接表_SSimpLe_Y的博客-程序员秘密

过山车的题,二分匹配模板#include#include#include#includeusing namespace std;const int maxn = 1500;//!!!int match[maxn],book[maxn];vector e[maxn];int m,n;int dfs(int u){ int i; for(i=0;i<e[

【算法学习】统计逆序数的个数_求逆序数个数_zylkkx的博客-程序员秘密

要求:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。方法:归并方法,将数组分为前后两短,统计数木后同时进行排序。例如,数列F(n)分为head和rear等长两部分,两部分都分别排过序。则总的逆序数,等于head部分的逆序数 +rear部分的逆序数,再加上逆序的两个数分别在head和rear...

随便推点

modelsim下Verilog和vhdl的混合仿真_modelsim混合编译vhdl和verilog_傻智智爱吃糖的博客-程序员秘密

一、dut.f文件../dut/src/lvds_top.v ../dut/intel_ip/lvds_fifo_8_32/lvds_fifo_8_32.v../dut/intel_ip/lvds_fifo_32_8/lvds_fifo_32_8.v../dut/intel_ip/lvds_rx/lvds_rx.v../dut/intel_ip/lvds_tx/lvds_tx.v../testbench/testbench.v二、sim.bat文件rd /S /Q workvlib

poj2063(容量变化的背包)_Stayaccept的博客-程序员秘密

链接:点击打开链接题意:给你一笔钱,现在要拿这笔钱去投资,有t种股票,每种股票有一个价值和年收益,输出在n年后获得最大收益代码:#include #include #include #include #include using namespace std;int v[105],w[105];int dp[1500000];int main(){

python logging模块禁止requests及elasticsearch模块打印请求日志_python log中不记录客户端发送的http请求_qhh0205的博客-程序员秘密

python logging模块禁止requests及elasticsearch模块打印请求日志最近写的代码基本都用到了python的标准日志模块logging,但发现在使用requests模块和elasticsearch时,即使自己没有打印相关日志,也会自动生成请求过程日志,示例如下:requests日志 2017-11-02 17:30:31|INFO|Starting new...

解决Anaconda第三方库下载慢_anaconda prompt网络特慢_TomOfJerry的博客-程序员秘密

解决Anaconda第三方库下载慢Conda安装好以后,默认的镜像源国内很多网络环境下,访问不稳定,下载速率慢,通过修改conda的镜像源解决这一问题。将镜像源指定为国内的清华大学镜像。材料:2019年3月,Anconda5.2.0,Windows10。参考:https://jingyan.baidu.com/article/1876c8527be1c3890a137645.htm...

centos7 yum安装nodejs版本过低的解决办法_sudo yum install nodejs 版本 12不够_henry14760002630的博客-程序员秘密

curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -yum update -yyum remove nodejs npm -yyum install nodejs npm -y这样就可以安装到14的版本了,需要什么版本可以自己指定。

ROS-PCL读取pcd点云数据并在rviz中进行显示_pcl读取bag_selfDisciplineSun的博客-程序员秘密

环境:Ubuntu18.04ROS melodicC++创建工作空间和功能包cd Downloads/ROSmkdir -p pcdreadshow_ws/srccd srccatkin_init_workspacecatkin_create_pkg read_pcd pcl_conversions pcl_ros roscpp sensor_msgs进入到功能包的src文件夹下面新建.cpp文件read_pcd.cpp#include&lt;ros/ros.h&gt;#

推荐文章

热门文章

相关标签