`

logback+slf4j经典日志文件配置

阅读更多

1.pom 文件配置:

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.5</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jcl-over-slf4j</artifactId>
      <version>1.6.2</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>0.9.29</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>0.9.29</version>
    </dependency>

 

2.logback.xml文件配置

 <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
      <charset>UTF-8</charset>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>WARN</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <property name="maxHistory" value="30" />
  <property name="maxFileSize" value="20MB" />
  <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <FileNamePattern>./logs/log-error-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
      <MaxHistory>${maxHistory}</MaxHistory>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>${maxFileSize}</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
      <charset>UTF-8</charset>
      <immediateFlush>false</immediateFlush>
    </encoder>
    <prudent>true</prudent>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>ERROR</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <FileNamePattern>./logs/log-warn-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
      <MaxHistory>${maxHistory}</MaxHistory>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>${maxFileSize}</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
      <charset>UTF-8</charset>
      <immediateFlush>false</immediateFlush>
    </encoder>
    <prudent>true</prudent>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>WARN</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
    </filter>
  </appender>

  <appender name="FILE_OTHER" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <FileNamePattern>./logs/log-info-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
      <MaxHistory>${maxHistory}</MaxHistory>
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>${maxFileSize}</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L - %msg%n</pattern>
      <charset>UTF-8</charset>
      <immediateFlush>false</immediateFlush>
    </encoder>
    <prudent>true</prudent>
    <!-- <filter class="ch.qos.logback.classic.filter.LevelFilter"> -->
    <!-- <level>ERROR</level> -->
    <!-- <onMatch>DENY</onMatch> -->
    <!-- <onMismatch>ACCEPT</onMismatch> -->
    <!-- </filter> -->
  </appender>

  <root level="INFO">
    <appender-ref ref="FILE_ERROR" />
    <appender-ref ref="FILE_WARN" />
    <appender-ref ref="FILE_OTHER" />
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

 

3.参数详解可以参考:

http://www.cnblogs.com/yin-jingyu/archive/2011/09/02/2163448.html

 

<encoder>:

负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。

目前PatternLayoutEncoder 是唯一有用的且默认的encoder ,有一个<pattern>节点,用来设置日志的输入格式。使用“%”加“转换符”方式,如果要输出“%”,则必须用“\”对“\%”进行转义。

例如:

  1. <encoder>   
  2.    <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>   
  3. </encoder  

 

<pattern>里面的转换符说明:

 

转换符 作用
c {length } 
lo {length } 
logger {length } 
输出日志的logger名,可有一个整形参数,功能是缩短logger名,设置为0表示只输入logger最右边点符号之后的字符串。 Conversion specifier Logger name Result
%logger mainPackage.sub.sample.Bar mainPackage.sub.sample.Bar
%logger{0} mainPackage.sub.sample.Bar Bar
%logger{5} mainPackage.sub.sample.Bar m.s.s.Bar
%logger{10} mainPackage.sub.sample.Bar m.s.s.Bar
%logger{15} mainPackage.sub.sample.Bar m.s.sample.Bar
%logger{16} mainPackage.sub.sample.Bar m.sub.sample.Bar
%logger{26} mainPackage.sub.sample.Bar mainPackage.sub.sample.Bar

 

C {length } 
class {length } 
输出执行记录请求的调用者的全限定名。参数与上面的一样。尽量避免使用,除非执行速度不造成任何问题。
contextName 
cn 
输出上下文名称。
d {pattern } 
date {pattern } 
输出日志的打印日志,模式语法与java.text.SimpleDateFormat 兼容。 Conversion Pattern Result
%d 2006-10-20 14:06:49,812
%date 2006-10-20 14:06:49,812
%date{ISO8601} 2006-10-20 14:06:49,812
%date{HH:mm:ss.SSS} 14:06:49.812
%date{dd MMM yyyy ;HH:mm:ss.SSS} 20 oct. 2006;14:06:49.812
F / file 输出执行记录请求的java源文件名。尽量避免使用,除非执行速度不造成任何问题。
caller{depth}caller{depth, evaluator-1, ... evaluator-n} 输出生成日志的调用者的位置信息,整数选项表示输出信息深度。

例如, %caller{2}   输出为:

0    [main] DEBUG - logging statement 
Caller+0   at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)
Caller+1   at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)

例如, %caller{3}   输出为:

16   [main] DEBUG - logging statement 
Caller+0   at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)
Caller+1   at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)
Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)
L / line 输出执行日志请求的行号。尽量避免使用,除非执行速度不造成任何问题。
m / msg / message

输出应用程序提供的信息。

M / method 输出执行日志请求的方法名。尽量避免使用,除非执行速度不造成任何问题。
n 输出平台先关的分行符“\n”或者“\r\n”。
p / le / level 输出日志级别。
r / relative 输出从程序启动到创建日志记录的时间,单位是毫秒
t / thread 输出产生日志的线程名。
replace(p ){r, t}

p 为日志内容,r 是正则表达式,将p 中符合r 的内容替换为t 。

例如, "%replace(%msg){'\s', ''}"

 

 

分享到:
评论

相关推荐

    logback-slf4j日志配置文件-下载即可使用

    logback+slf4j 异步日志输出到不同级别的文件-配置文件,下载即可使用。结合lombok【@slf4j】即可方便愉快的输出日志了 666

    Logback配置文件根据 LEVEL级别将日志分类保存到不同文件.docx

    SpringBoot工程自带logback和slf4j的依赖,所以重点放在编写配置文件上,需要引入什么依赖,日志依赖冲突统统都不需要我们管了。 logback框架会默认加载classpath下命名为logback-spring.xml或logback.xml的配置文件...

    Logback日志系统文件

    Logback是由log4j创始人设计的另一个开源日志组件,基于slf4j的日志规范实现的框架,性能比log4j要好。 Logback主要分为三个技术模块: logback-core:该模块为其他两个模块奠定了基础。 logback-classic:是log4j...

    springboot 日志配置文件 logback

    logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。 logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能。 ...

    logback日志的jar包和配置介绍

    logback日志的jar包和配置介绍:logback-classic-1.1.2.jar、logback-core-1.1.2.jar、slf4j-api-1.7.7.jar、logback.xml、rsframework.properties

    logback下载 日志文件jar包

    内置三个jar包 一个配置文件 logback.txt logback-classic-1.2.3.jar logback-core-1.2.3.jar slf4j-api-1.7.26.jar

    自定义日志脱敏组件,简单3 步完成 Spring Boot 的日志脱敏

    本组件基于logback+slf4j,暂不支持log4j,如需解决log4j的日志,可以参照本组件的思想去完成。 本组件支持的脱敏数据类型:八大基本类型及其包装类型、String类型、Map、List、JSON字符串、项目中的POJO对象。 注...

    java代码实例-日志规范史上最全java日志攻略(附教程)

    SLF4J "日志门面的使用 日志的绑定 日志的桥接 日志门面的原理" log-back "log-back的日志框架 log-back的配置 logback记录tomcat的访问日志" log4j2 "log4j2的日志框架 log4j2的配置 异步日志的使用" spring整合log...

    LogBackSocket服务端演示代码.zip

    logboot是一个基于logback日志实现和slf4j日志接口的,零配置结构化日志管理组件。使用logboot后,您不用再编写logback繁琐的日志配置文件,您仅需执行日志写入的方法,logboot就会按照既定的结构生成相应的日志。...

    Logback中文文档.pdf

    Logback非常自然地实现了 SLF4J,不需要像 Log4j 和 JUL 那样加一个适配层。Spring Boot 的默认日志框架使用的是 Logback。支持自动重新加载配置文件,不需要另外创建扫描线程来监视

    logback 中文手册

    Logback非常自然地实现了 SLF4J,不需要像 Log4j 和 JUL 那样加一个适配层。Spring Boot 的默认日志框架使用的是 Logback。支持自动重新加载配置文件,不需要另外创建扫描线程来监视。PDF 共 200 页,非常全面。

    java日志框架视频教程

    视频详细讲解,需要的小伙伴自行网盘下载,链接见附件,... logback-access使用章节七:Log4j21. 快速入门2. 配置文件3. 异步日志4. 性能介绍章节八:SpringBoot使用日志1. springBoot日志设计2. springBoot日志使用

    基于Java日志平台的访问链路追踪实战(1.01G)

    ---03-系统日志与log4j日志简介.mp4 ---04-log4j实例代码展示.mp4 ---05-jul的诞生与代码展示.mp4 ---06-jcl的历史背景与简介.mp4 ---07-jcl面向接口代码风格展示.mp4 ---08-jcl的优缺点与解决方案.mp4 ---09-...

    基于Java日志平台的访问链路追踪实战(1.34G)

    ---03-系统日志与log4j日志简介.mp4 ---04-log4j实例代码展示.mp4 ---05-jul的诞生与代码展示.mp4 ---06-jcl的历史背景与简介.mp4 ---07-jcl面向接口代码风格展示.mp4 ---08-jcl的优缺点与解决方案.mp4 ---09-...

    Java日志框架:logback详解

    这个严格来说算不上优点,只是这样,再理解slf4j的前提下会很容易理解logback,也同时很容易用其他日志框架替换logbacklogback有比较齐全的200多页的文档logback当配置文件修改了,支持自动重新加载配置文件,扫描...

    基于Dubbo实现的SOA分布式(没有实现分布式事务)-SpringBoot整合各种组件的JavaWeb脚手架+源代码+文档

    - Logback+Slf4j多环境日志 - i18n - Maven Multi-Module - WebSocket - ElasticSearch # 功能们: ## 用户模块 - 获取图片验证码 - 登录:解决重复登录问题 - 注册 - 分页查询用户信息 - 修改用户信息 ## 站内...

    考试系统源码java-org.ops4j.pax.logging:OSGi日志框架实现。支持SLF4J、LOG4J、JCL等

    SLF4J 或 Commons-Logging。 日志 API本身不做任何日志,而是需要特定的日志实现(和相关配置)和日志实现本身之间应该有区别。 与上述区别相匹配的日志 API(或Facades )包括: 日志实现始终提供自己的API,并且...

    slf4jlogback:SLF4J Logback 的裸骨示例

    裸骨 SLF4J/Logback 示例 怎么跑 java -jar build\libs\LoggingDemo-0.0.1-SNAPSHOT.jar 日志文件将在 c:/temp/SystemOut.log 如何重建jar 对于windoze: gradlew.bat jar 对于 Linux: ./gradlew jar 注意 1:...

    logback-elasticsearch-appender:重新登录Elasticsearch Appender

    重新登录Elasticsearch ...用法像往常一样包括slf4j和logback(取决于此库将不会自动将它们拉入)。 在您的pom.xml (或等效文件)中,添加: &lt;dependency&gt; &lt;groupId&gt;com.internetitem&lt;/groupId&gt; &lt;artifactId&gt;lo

    springboot知识点整理

    3.3 其他日志框架统一转换成slf4j+logback 44 3.4 Spring Boot日志使用 45 3.5 Spring Boot默认配置 47 3.6 指定日志文件和日志Profile功能 52 3.7 切换日志框架(不使用SLF4j+LogBack) 54 4 Spring Boot与Web开发 ...

Global site tag (gtag.js) - Google Analytics