logback按日志级别多文件输出

  • springboot使用使用不同日志配置文件
  • 不同级别日志多文件输出
    • 日志多文件输出场景
    • XML配置
      • 标签组件
      • 控制日志输出到不同文件的关键标签filter讲解
    • 推荐一个详细讲解logback.xml标签的网址

最近开发了不少项目,因为想把错误日志单独输出到另一个文件中,所以好好研究了下logback日志,在此记录下。

本文主要解决两个问题

  1. springboot使用使用不同日志配置文件
  2. 不同级别日志多文件输出

springboot使用使用不同日志配置文件

  1. 在springboot的application.properties配置文件(application.yml同理)添加logging.config=classpath:logback-debug.xml
  2. 在src/java/resources下创建logback-debug.xml

不同级别日志多文件输出

日志多文件输出场景

  • 先说一个需求,然后根据需求引出配置,讲解配置。
  • 需求:info及以上级别的日志输出到一个文件,warn及以上级别的日志输出到另外一个文件。

XML配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --><property name="LOG_HOME" value="/home/logs" /><property name="AppName" value="demo" /><!-- 控制台输出 --><appender name="STDOUT"class="ch.qos.logback.core.ConsoleAppender"><encoderclass="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d{yyyy-MM-dd HH:mm:ss.SSS}表示日期,%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="INFO_FILE"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/${AppName}.info.log</file><rollingPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名 --><FileNamePattern>${LOG_HOME}/${AppName}.info.%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件保留天数 --><MaxHistory>30</MaxHistory><maxFileSize>100MB</maxFileSize></rollingPolicy><encoderclass="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d{yyyy-MM-dd HH:mm:ss.SSS}表示日期,%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="ERROR_FILE"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_HOME}/${AppName}.error.log</file><rollingPolicyclass="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名 --><FileNamePattern>${LOG_HOME}/${AppName}.error.%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件保留天数 --><MaxHistory>30</MaxHistory><maxFileSize>100MB</maxFileSize></rollingPolicy><encoderclass="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d{yyyy-MM-dd HH:mm:ss.SSS}表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder><!-- 允许打印警告日志到文件的过滤器 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>NEUTRAL</onMismatch></filter><!-- 允许打印错误日志到文件的过滤器 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- onMatch,onMismatch取值及含义 --><!-- DENY:日志将立即被抛弃不再经过其他过滤器,最后一个filter的onMismatch使用 --><!-- NEUTRAL:有序列表里的下个过滤器过接着处理日志,非最后一个filter的onMismatch使用 --><!-- ACCEPT:日志会被立即处理,不再经过剩余过滤器,所有filter的onMatch使用 --><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!--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" /><logger name="c.o.m" level="INFO" /><!-- 日志输出级别 --><root level="INFO"><appender-ref ref="STDOUT" /><appender-ref ref="INFO_FILE" /><appender-ref ref="ERROR_FILE" /></root>
</configuration>

标签组件

  • 定义打印组件
<appender>
...
</appender>
  • 定义指定包路径日志级别
<logger name="c.o.m" level="INFO" />
  • 日志关联打印组件
<root><appender-ref ref="STDOUT" /></root>

控制日志输出到不同文件的关键标签filter讲解

<filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>NEUTRAL</onMismatch>
</filter>
  1. level:拦截的日志级别
  2. onMatch:匹配level后的处理方式
  3. onMismatch:未匹配level后的处理方式
  4. onMatch和onMismatch取值说明
    DENY:日志将立即被抛弃不再经过其他过滤器,最后一个filter的onMismatch使用
    NEUTRAL:有序列表里的下个过滤器过接着处理日志,非最后一个filter的onMismatch使用
    ACCEPT:日志会被立即处理,不再经过剩余过滤器,所有filter的onMatch使用

推荐一个详细讲解logback.xml标签的网址

logback按等级输出到不同日志文件相关推荐

  1. log4j.properties配置与将异常输出到Log日志文件实例

    将异常输出到 log日志文件 实际项目中的使用: <dependencies><dependency><groupId>org.slf4j</groupId& ...

  2. IDEA控制台输出中文乱码日志文件正常

    控制台中文输出乱码但输出的日志文件正常 idea.exe.vmoptions与idea64.exe.vmoptions已经配置 -Dfile.encoding=UTF-8 logback.xml中也配 ...

  3. SpringBoot生成日志文件---logback和log4j

    SpringBoot生成日志文件---logback和log4j 一.logback logback是SpringBoot自带的日志文件,默认会为控制台输出INFO级别的日志,并且不会将日志文件保存. ...

  4. 要求输出事故报告,线上日志文件却不见了!!

    目录 案例 排查 优化解决 案例 某天,可爱的产品经理跑过来对陈皮说,一个使用了好久,近期也未发过版的xx服务挂了!!需要赶紧处理下,并输出事故报告. 服务挂了,要尽快恢复,首先肯定使用重启大法.果不 ...

  5. linux 输出gc日志,Tomcat输出保存JVM GC日志文件

    当系统出现问题时,分析java虚拟机GC日志可以帮助我们定位问题,一般来说, 我们可以通过制定JVM参数使tomcat保存GC日志文件,具体实现如下: Windows下 找到tomcat的解压目录,进 ...

  6. log4j输出多个自定义日志文件

    导入包 commons-logging-1.1.1.jar log4j-1.2.16.jar 如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢? 先看 ...

  7. Linux 自定义service,并重定向输出到日志文件

    最近由于项目需要,需后台运行java application,进行一些操作,并将屏幕输出定向到日志文件中. 首先将jiar 文件拷贝到linux.这里我放在 /home/jerry 输入命令 cd / ...

  8. log4j输出多个自定义日志文件、动态配置多个日志文件

    转:http://blog.sina.com.cn/s/blog_8417657f0101lskw.html log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况, ...

  9. python写日志文件_Python logging日志模块 配置文件方式

    在一些微服务或web服务中我们难免需要日志功能,用来记录一些用户的登录记录,操作记录,以及一些程序的崩溃定位,执行访问定位等等; Python内置 非常强大的日志模块 ==> logging 今 ...

  10. python使用logging打印信息到日志文件中

    python使用logging打印信息到日志文件中 参考 Python输出日志信息 Python + logging 输出到屏幕,将log日志写入文件 使用logging打印日志到文件中的目的是: 解 ...

最新文章

  1. UVA 11255 Necklace
  2. 微信小程序 - 实现左滑动删除功能
  3. [POJ1155]TELE
  4. sublime 设置自动换行
  5. 不要再危言耸听!家用电脑辐射全揭秘
  6. 基于Android的人事管理系统开发与设计源码(一)
  7. 拓端tecdat|Excel实例:排序和筛选2
  8. Ubuntu安装SSTP
  9. java反射机制和运用
  10. Python基础学习的一些记录
  11. UvaLA 4670 Dominating Patterns
  12. 终端数据防泄漏案例分析
  13. javascript event bubbling and capturing (再谈一谈js的事件冒泡和事件补获,看到这篇文章加深了理解)...
  14. 微信小程序(组件:路由、表单、媒体、自定义组件,插槽、组件通讯、侦听器、生命周期)
  15. 零基础Bootstrap入门教程(16)--模态框
  16. VMware 虚拟机安装 Mac OS X Mountain Lion 苹果系统(vm9.0和Mac OS10.7)
  17. vscode下git的常见操作
  18. Google入股百度!
  19. 【程序员进阶之路】吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程
  20. OOM-Java内存不足排查与分析

热门文章

  1. Windows下将jar包封装成服务程序
  2. 6.字符串截取数据求平均分
  3. Tomcat,Jboss,Weblogic通过jndi连接数据库
  4. LeetCode Longest Increasing Subsequence
  5. 【poj1284-Primitive Roots】欧拉函数-奇素数的原根个数
  6. 081 Search in Rotated Sorted Array II
  7. matlab各种出错,matlab常见错误命令汇总
  8. cocos2d-x瓦片地图制作详解
  9. HCIE Security AC的准入技术 备考笔记(幕布)
  10. NP、OSPF 故障排除