此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. js 无刷新文件上传 (兼容IE9 )

    之前项目中有个文件上传了需求,于是直接就使用了FormData对象异步上传,但是在测试得时候发现ie9无法正常上传(项目要求兼容IE9+),无奈,查资料得知IE9- 版本不支持formdata对象得异 ...

  2. [Leetcode题解]2. 两数相加-链表遍历和重构

    1. 审题leetcode 02 add-two-numbers​ 我们先看一下题目,如下  : 链表的从前往后为数字的低位到高位,模拟加法手算过程,从前往后遍历即可, 注意每个数字0-9,进位要处理 ...

  3. Linux基础命令之.命令

    . 点命令 .命令等同source 可以让配置文件被读到进程中,立刻生效

  4. JS实现页面计时

    前言 计时功能在网页上是非常多的,现在我就用原生JS做个计时功能吧 HTML <div><label>得到毫</label> <h5></h5&g ...

  5. Qlik Sense学习笔记之Mashup开发(一)

    date: 2018-12-21 12:33:29 updated: 2018-12-21 12:33:29 Qlik Sense学习笔记之Mashup开发(一) 1.基于Qlik Sense API ...

  6. Git系列:常用命令

    一.背景 作为一名程序员,怎么能不懂Git那些常用命令呢?于是花费一点时间来总结Git命令.关于安装的话,就不讲了. 二.常用命令 1.配置全局的用户名称和用户邮箱 git config --glob ...

  7. Python爬虫之多线程

    详情点我跳转 关注公众号"轻松学编程"了解更多. 多线程 在介绍Python中的线程之前,先明确一个问题,Python中的多线程是假的多线程! 为什么这么说,我们先明确一个概念,全 ...

  8. windows 查看内存

    MEMORYSTATUSEX statex; statex.dwLength = sizeof (statex); GlobalMemoryStatusEx (&statex); _tprin ...

  9. 超实用的14个 Spring MVC “隐藏”技巧,用了都说好!

    通常,在Spring MVC中,我们编写一个控制器类来处理来自客户端的请求.然后,控制器调用业务类来处理与业务相关的任务,然后将客户端重定向到逻辑视图名称,该名称由Spring的调度程序Servlet ...

  10. 【Azure 环境】存储在Azure上的文件,使用IE/Edge时自动打开的问题,如何变为下载而非自动打开

    问题描述 存储,作为云服务最重要的一部分.当需要从云存储中下载文件时,时常面临一些格式的文件被浏览器自动打开而非下载,那如何来解决这个问题呢? 在Azure中,存储的服务有以下方式: Azure Bl ...