好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

解决slf4j 和 logback-classic遇到的坑

slf4j 和 logback-classic遇到的坑

以前一直不注意日志的打印,最近项目需求需要用日志记录用时性能,集成日志时遇到的问题记录下。

问题一:服务器启动时提示未找到slf4j的实现类

此时一定是没有在classpath中找到jar包,启动时会有相应的警告提示。需要三个包:slf4j-api(接口),logback-classic(最优实现),logback-core(核心)。加入的位置可能存在两种,一种是tomcat需要,需要加在tomcat的lib下,还有一种是加在项目的classpath下。

问题二:不生成文件或者生成的文件路径不对

不生成文件存在一个原因,logback.xml没有配置写入到文件(默认配置文件的顺序是logback-test.xml, logback.groovy, logback.xml),注意如果是maven项目,不要把src/test/resources中的logback-test.xml发到环境中,因为优先级最高。关于生成的文件路不对,解释是正确的配置

?

1

< property name = "LOG_HOME" value = "servers/AdminServer/logs" />

文件位置是eclipse的根目录,如果配置是

?

1

< property name = "LOG_HOME" value = "/servers/AdminServer/logs" />

则文件位置是eclipse所在盘符的根目录,如D盘。

slf4j与logback的结合使用

一、logback的介绍

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。

此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。 Logback是要与SLF4J结合起来用两个组件的官方网站如下:

logback的官方网站: http://logback.qos.ch

SLF4J的官方网站:http://www.slf4j.org

二、组件

Logback 分为三个模块:logback-core,logback-classic,logback-access。其中logback-core 是核心;logback-classic 改善了 log4j,且自身实现了 SLF4J API,所以即使用 Logback 你仍然可以使用其他的日志实现,如原始的 Log4J,java.util.logging 等;logback-access 让你方便的访问日志信息,如通过 http 的方式。

三、引用配置

1、 pom.xml文件:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

< dependency >

     < groupId >org.slf4j</ groupId >

     < artifactId >slf4j-api</ artifactId >

     < version >1.7.12</ version >

</ dependency >

< dependency >

     < groupId >org.slf4j</ groupId >

     < artifactId >jcl-over-slf4j</ artifactId >

     < version >1.7.12</ version >

</ dependency >

< dependency >

     < groupId >ch.qos.logback</ groupId >

     < artifactId >logback-core</ artifactId >

     < version >1.1.3</ version >

</ dependency >

< dependency >

     < groupId >ch.qos.logback</ groupId >

     < artifactId >logback-classic</ artifactId >

     < version >1.1.3</ version >

</ dependency >

2、logback.xml

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<? xml version = "1.0" encoding = "UTF-8" ?>

< configuration >

     < jmxConfigurator />

     <!-- 控制台输出日志 -->

     < appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender" >

         < layout class = "ch.qos.logback.classic.PatternLayout" >

             < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -

                 %msg%n</ pattern >

         </ layout >

     </ appender >

     <!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份) -->

     < appender name = "FILE"

         class = "ch.qos.logback.core.rolling.RollingFileAppender" >

         < File >xxxx.log</ File >

         < rollingPolicy class = "ch.qos.logback.core.rolling.FixedWindowRollingPolicy" >

             < FileNamePattern >xxxx.log.%i.bak</ FileNamePattern >

             < MinIndex >1</ MinIndex >

             < MaxIndex >12</ MaxIndex >

         </ rollingPolicy >

         < triggeringPolicy

             class = "ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy" >

             < MaxFileSize >100MB</ MaxFileSize >

         </ triggeringPolicy >

         < layout class = "ch.qos.logback.classic.PatternLayout" >

             < Pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -

                 %msg%n</ Pattern >

         </ layout >

     </ appender >

     <!--这里指定logger name 是为jmx设置日志级别做铺垫 -->

     < logger name = "com.xxx.xxx" >

         < level value = "INFO" />

         < appender-ref ref = "STDOUT" />

         < appender-ref ref = "FILE" />

     </ logger >

</ configuration >

四、示例代码

?

1

2

3

4

5

6

7

8

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

class Bar {

     Logger logger = LoggerFactory.getLogger(Bar. class );

     public void doIt() {

         logger.debug( "doing my job" );

     }

}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/byg184244735/article/details/77726598

查看更多关于解决slf4j 和 logback-classic遇到的坑的详细内容...

  阅读:57次