`

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日志配置文件下载即可使用" logback-slf4j是Java领域中一种常用的日志记录解决方案,它通过结合slf4j(Simple Logging Facade for Java)来提供了异步日志输出的功能,能够将日志输出到不同的文件中...

    Logback+Slf4j,基于SpringBoot实现日志脱敏.zip

    SpringBoot框架以其简洁的配置和强大的功能深受开发者喜爱,而Logback和Slf4j则是Java世界中广泛使用的日志处理库。本文将深入探讨如何利用Logback和Slf4j在SpringBoot项目中实现日志的敏感信息脱敏,以保护用户隐私...

    logback+slf4j打印工具类

    总结来说,"logback+slf4j打印工具类"是一种在Java项目中实现日志记录的有效方式,通过SLF4J的简洁API和Logback的强大功能,可以轻松地定制日志记录策略,例如每天生成一个日志文件。这种工具类的使用,不仅提高了...

    logback+slf4j使用

    **SLF4J(Simple Logging Facade for Java)** 是一个为各种日志框架提供简单统一接口的Java库,使得最终用户能够在部署时插入所需的日志实现,如Log4j、Logback等。**Logback** 则是SLF4J的推荐后端实现,由Log4j的...

    Logback+slf4j【进阶】【实例】.docx

    SLF4J(Simple Logging Facade for Java)是一个日志抽象层,允许开发者在运行时插入任意日志实现,而Logback是SLF4J的一个具体实现,它在性能和功能上优于早期的Log4j。 1. 替换现有Log4j 在项目中从Log4j切换到...

    logback+self4j 进行日志记录

    ** 当程序运行时,SLF4J会自动查找`logback-test.xml`并应用其中的配置。通过控制台或指定的日志文件,我们可以看到按照配置输出的日志信息。 总结来说,理解并正确配置`logback-test.xml`是实现高效日志记录的关键...

    springMvc+mybaties+slf4j

    【SLF4J(Simple Logging Facade for Java)】是一个日志门面,为各种日志框架如log4j、Logback提供一个统一的接口。SLF4J允许开发者在部署时选择合适的日志实现,只需更换绑定的日志实现库即可。这使得项目具有更好...

    logbackーslf4j-配置文件实例 难得

    **Logback-SLF4J配置文件详解** 在Java开发中,日志管理是不可或缺的一部分,Logback和SLF4J(Simple Logging Facade for Java)是广泛使用的日志框架。SLF4J提供了一个接口层,允许开发者选择任何底层的日志实现,...

    日志 log4j-slf4j+logback1.3.0

    本文将深入探讨“日志4j(Log4j)、SLF4J(Simple Logging Facade for Java)和logback 1.3.0”这三者之间的关系以及它们在Java应用中的作用。 首先,Log4j是Apache软件基金会开发的一个流行的日志记录框架,它允许...

    slf4j完整日志文件

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志门面(Logging Facade),它为各种日志框架提供了一个简单的统一接口,如Log4j、Java Util Logging (JUL)、Logback等。这个接口允许最终用户在部署时插入...

    log4j+slf4j实现 log4j测试代码,log4j+slf4j实现 log4j测试代码

    SLF4J是一个抽象层,为各种日志框架提供了统一的API,如Logback、Log4j等。它的主要优点在于可以让你在不修改代码的情况下更换底层的日志框架,只需改变类路径上的绑定即可。SLF4J提供了丰富的日志级别,如DEBUG、...

    slf4j+logback的jar和配置文件

    这些JAR文件通常包括SLF4J API(如`slf4j-api-*.jar`)、Logback核心库(如`logback-core-*.jar`)、Logback经典库(如`logback-classic-*.jar`)以及任何其他依赖,例如Jansi(用于控制台颜色)或JUL到SLF4J适配器...

    ssm +shiro+slf4j+logback 学习记录

    这个"ssm +shiro+slf4j+logback 学习记录"的压缩包可能包含了一系列教程、示例代码和配置文件,帮助开发者学习如何在实际项目中整合这些技术,实现高效且安全的Web应用。通过学习和实践这些内容,你可以掌握现代Java...

    slf4j+logback+springmvc+maven小例子

    SLF4J允许开发者在部署时插入所需的日志实现,比如logback、log4j等,这使得项目的可移植性和灵活性大大增强。 Logback是另一个关键组件,它是由log4j的创始人Ceki Gülcü创建的。Logback是目前广泛使用的日志框架...

    Junit+log4j+slf4j

    "Junit+log4j+slf4j"这个组合涉及到的是Java编程领域的三个关键工具:JUnit用于进行单元测试,log4j是经典的日志记录库,而SLF4J(Simple Logging Facade for Java)则是一个日志抽象层。 JUnit是Java领域最广泛...

    调试日志之slf4j+logback

    在IT行业中,日志记录是系统调试、故障排查和性能分析的重要工具。本文将深入探讨“调试日志之slf4j+...文档《复件 日志系统.docx》可能包含了更多关于如何配置和使用SLF4J+Logback的详细信息,建议进一步查阅学习。

    logback 1.2.6 和 slf4j 1.7.32

    Logback和SLF4J是Java日志处理领域中的两个重要组件。Logback是日志框架,而SLF4J(Simple Logging Facade for Java)则是一个日志抽象层,它们共同为Java应用程序提供灵活且高效的日志记录能力。 **SLF4J介绍** ...

    tomcat9 slf4j+log4j2 写日志.zip

    总之,配置Tomcat 9使用SLF4J和Log4j2进行日志记录是一个涉及依赖管理、日志配置文件设置和Tomcat自身配置的过程。通过上述步骤,你应该能够成功解决“tomcat9 slf4j+log4j2 不写日志”的问题。如果在实践中遇到问题...

    slf4j-api-1.6.1.jar + slf4j-nop-1.6.1.jar

    在实际应用中,除了将SLF4J API和NOP实现加入类路径外,还需要根据所选日志框架的特性配置相应的配置文件,如Logback的`logback.xml`或Log4j的`log4j.properties`。这些配置文件定义了日志的级别、输出目的地、格式...

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

    总结起来,通过合理的Logback配置,我们可以实现日志的分类存储,提高日志输出的性能,并有效管理日志文件。这不仅有利于日常的开发调试,也能在系统出现问题时提供宝贵的线索,帮助我们快速定位和解决问题。

Global site tag (gtag.js) - Google Analytics