此appender有顺序,最好不要乱调顺序,输出日志如下:

drwxr-xr-x 2 root root 4096 Dec 3 00:00 2019-12-02
drwxr-xr-x 2 root root 4096 Dec 4 13:48 2019-12-03
drwxr-xr-x 2 root root 4096 Dec 5 09:55 2019-12-04

-rw-r--r-- 1 root root 29712 Dec 5 10:16 error.log
-rw-r--r-- 1 root root 426 Dec 5 10:28 framework.log
-rw-r--r-- 1 root root 237 Dec 5 10:28 XXXXMo.log



<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<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(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="LOG_FILE" value="../logs/service-XXXXMo"/>
<property name = "log_level" value = "INFO"/>
<property name = "max_log_files" value = "20"/>

<!--控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>

<!--这段注释掉,测试是通过的,过滤掉带nacos关键字的日志不打印 <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>

<evaluator>
<expression>
return message.contains("nacos");
</expression>
</evaluator>
</filter>-->
</appender>

<!-- 错误日志(框架 + 业务) -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOG_FILE}/%d{yyyy-MM-dd}/error.log</fileNamePattern>
<maxHistory>${max_log_files}</maxHistory>
</rollingPolicy>

<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>

<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<!--业务日志文件-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${LOG_FILE}/XXXXMo.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}/%d{yyyy-MM-dd}/XXXXMo.log</fileNamePattern>
<maxHistory>${max_log_files}</maxHistory>
</rollingPolicy>

<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>

</appender>

<!-- 框架日志 -->
<appender name="FRAMEWORK" class="ch.qos.logback.core.rolling.RollingFileAppender">

<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>

<file>${LOG_FILE}/framework.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${LOG_FILE}/%d{yyyy-MM-dd}/framework.log</fileNamePattern>
<maxHistory>${max_log_files}</maxHistory>

</rollingPolicy>

<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>

<evaluator>
<expression>
event.getLevel() == ch.qos.logback.classic.Level.${log_level}
|| event.getLevel() == ch.qos.logback.classic.Level.WARN
</expression>
</evaluator>
</filter>
</appender>

<logger name="org.apache.ibatis" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<logger name="org.springframework" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<logger name="com.alibaba" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<logger name="org.apache.zookeeper" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<logger name="org.I0Itec" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<logger name="org.quartz" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<logger name="org.hibernate" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<logger name="org.mybatis" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<logger name="com.mysql" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<logger name="com.alibaba.nacos" level="${log_level}" additivity="false">
<appender-ref ref="FRAMEWORK"/>
<appender-ref ref="ERROR"/>
</logger>

<root level="info">
<appender-ref ref="FILE" />
<appender-ref ref="ERROR" />
<appender-ref ref="CONSOLE" />
</root>

</configuration>

logback怎么写?分类输出日志到不同的文件的更多相关文章

  1. SpringBoot+logback实现按业务输出日志到不同的文件

        公司有个项目,需要和几个第三方系统对接.这种项目,日志一定要记录详细,不然出了问题就是各种甩锅.虽然项目里面和第三方系统对接相关的业务记录的日志很详细,但是由于整个项目的日志都在一个文件中,排 ...

  2. Spring按业务模块输出日志到不同的文件

    一.背景 在我们开发的过程中,可能存在如下情况: 1.有些时候我们需要调用第三方的接口,一般情况下,调用接口,我们都会记录请求的入参和响应的.如果我们自己系统的日志和第三方的日志混合到一个日志文件中, ...

  3. cocos2d-x 控制台输出日志

    在2dx中用CCLog输出日志,但是在vs的控制台中由于信息很多,很难发现.可以用下面方法,会重新启动一个黑色的控制台来输出日志 修改main.c文件,如下: #include "main. ...

  4. Log4j日志根据配置输出到多个自定义文件

    最近工作中遇到所有日志需要记录到一个文件,而错误的sql执行记录到另一个文件中,查询了一些资料搞定,记录下来.顺便吐槽下公司限制印象笔记的使用. ##log4j.rootLogger=INFO, CO ...

  5. springboot的日志框架slf4j (使用logback输出日志以及使用)

    1.为什么使用logback? ——在开发中不建议使用System.out因为大量的使用会增加资源的消耗.因为使用System.out是在当前线程执行的,写入文件也是写入完毕之后才继续执行下面的程序. ...

  6. Spring Boot 使用 Log4j2 & Logback 输出日志到 EKL

    文章目录 1.ELK 介绍 2.环境.软件准备 3.ELK 环境搭建 4.Spring Boot 配置示例 4.1.Log4j2 方式配置 4.2.Logback 方式配置 1.ELK 介绍 ELK ...

  7. SpringBoot使用logback输出日志并打印sql信息 --经典---

    最近在学习springboot以及一些springcloud插件的使用,其中发现默认的配置并不能打印一些有用的日志,所以需要自定义一些日志输出方式以便于查看日志排查问题,目前只整理了两种使用方式,如下 ...

  8. 使用logback.xml配置来实现日志文件输出

    转自:http://sungang-1120.iteye.com/blog/2104296 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback- ...

  9. logback不输出日志消息,且SLF4J绑定源错误

    我之前的项目已经成功使用过logback作为日志输出,但是今天新项目在使用的时候,不输出日志信息. 最后终于找到问题所在,并成功解决.解决步骤如下: 第一步:检查pom.xml 按照以往惯例,我先检查 ...

随机推荐

  1. pytest文档44-allure.dynamic动态生成用例标题

    前言 pytest 结合 allure 描述用例的时候我们一般使用 @allure.title 和 @allure.description 描述测试用例的标题和详情. 在用例里面也可以动态更新标题和详 ...

  2. 【C语言学习笔记系列】C语言编程狼追兔子问题代码解析!

    问题描述 一只兔子躲进了10个环形分布的洞中的一个.狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找:也没有找到,就隔2个洞,到第6个洞去找:以后每次多一个洞去找兔子--这样下去,如果一直找不到 ...

  3. 【图论】USACO07NOV Cow Relays G

    题目大意 洛谷链接 给定一张\(T\)条边的无向连通图,求从\(S\)到\(E\)经过\(N\)条边的最短路长度. 输入格式 第一行四个正整数\(N,T,S,E\),意义如题面所示. 接下来\(T\) ...

  4. Java常见的一些经典面试题(附答案解析)

    前言: 我想每个程序员比较头疼的事情都是:工作拧螺丝,面试造火箭吧.但是又必须经历这个过程,尤其是弄不清面试官问的问题,如果你准备的不是很充分,会导致面试的时候手足无措.今天这篇文章是从已工作5年的程 ...

  5. Spring源码解析之基础应用(二)

    方法注入 在spring容器中,大部分bean的作用域(scope)是单例(singleton)的,少部分bean的作用域是原型(prototype),如果一个bean的作用域是原型,我们A bean ...

  6. php使用xpath爬取内容

    <?php $html = file_get_contents('https://tieba.baidu.com/f?kw=%C9%EE%BB%A7&fr=ala0&loc=re ...

  7. centos8上使用crond

    一,查看crond的状态: [root@yjweb crontab]# systemctl status crond 说明:和其他service的执行相同: 启动:systemctl start cr ...

  8. 请勿过度依赖Redis的过期监听!!

    作者:迪壳 https://juejin.im/post/6844904158227595271 Redis 过期监听场景 业务中有类似等待一定时间之后执行某种行为的需求 , 比如 30 分钟之后关闭 ...

  9. pv操作是否会造成死锁呢?

    看了一些pv操作的例子,有一些基本原理不是想得很清楚. 有一个进程 while(true) { p(s); ...... v(s); } s的初值为1. 那么我的问题是,当多个该进程需要执行时,是否会 ...

  10. Rest Framework设计规范

    Rest Framework Rest Framework是前后端分离中用到的一种规范,它与框架本身无关,是一种软件架构风格,全称为Representational State Transfer. R ...