解決slf4j 和 logback-classic遇到的坑
slf4j 和 logback-classic遇到的坑
以前一直不注意日志的打印,最近項目需求需要用日志記錄用時性能,集成日志時遇到的問題記錄下。
問題一:服務器啟動時提示未找到slf4j的實現(xiàn)類
此時一定是沒有在classpath中找到jar包,啟動時會有相應的警告提示。需要三個包:slf4j-api(接口),logback-classic(最優(yōu)實現(xiàn)),logback-core(核心)。加入的位置可能存在兩種,一種是tomcat需要,需要加在tomcat的lib下,還有一種是加在項目的classpath下。
問題二:不生成文件或者生成的文件路徑不對
不生成文件存在一個原因,logback.xml沒有配置寫入到文件(默認配置文件的順序是logback-test.xml, logback.groovy, logback.xml),注意如果是maven項目,不要把src/test/resources中的logback-test.xml發(fā)到環(huán)境中,因為優(yōu)先級最高。關于生成的文件路不對,解釋是正確的配置
<property name="LOG_HOME" value="servers/AdminServer/logs"/>
文件位置是eclipse的根目錄,如果配置是
<property name="LOG_HOME" value="/servers/AdminServer/logs"/>
則文件位置是eclipse所在盤符的根目錄,如D盤。
slf4j與logback的結合使用
一、logback的介紹
Logback是由log4j創(chuàng)始人設計的又一個開源日志組件。logback當前分成三個模塊:logback-core,logback- classic和logback-access。logback-core是其它兩個模塊的基礎模塊。logback-classic是log4j的一個 改良版本。
此外logback-classic完整實現(xiàn)SLF4J API使你可以很方便地更換成其它日志系統(tǒng)如log4j或JDK14 Logging。logback-access訪問模塊與Servlet容器集成提供通過Http來訪問日志的功能。 Logback是要與SLF4J結合起來用兩個組件的官方網(wǎng)站如下:
logback的官方網(wǎng)站: http://logback.qos.ch
SLF4J的官方網(wǎng)站:http://www.slf4j.org
二、組件
Logback 分為三個模塊:logback-core,logback-classic,logback-access。其中l(wèi)ogback-core 是核心;logback-classic 改善了 log4j,且自身實現(xiàn)了 SLF4J API,所以即使用 Logback 你仍然可以使用其他的日志實現(xiàn),如原始的 Log4J,java.util.logging 等;logback-access 讓你方便的訪問日志信息,如通過 http 的方式。
三、引用配置
1、 pom.xml文件:
<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
<?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>
四、示例代碼
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class Bar {
Logger logger = LoggerFactory.getLogger(Bar.class);
public void doIt() {
logger.debug("doing my job");
}
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot中間件ORM框架實現(xiàn)案例詳解(Mybatis)
這篇文章主要介紹了SpringBoot中間件ORM框架實現(xiàn)案例詳解(Mybatis),本篇文章提煉出mybatis最經(jīng)典、最精簡、最核心的代碼設計,來實現(xiàn)一個mini-mybatis,從而熟悉并掌握ORM框架的涉及實現(xiàn),需要的朋友可以參考下2023-07-07
在Spring-Boot中如何使用@Value注解注入集合類
這篇文章主要介紹了在Spring-Boot中如何使用@Value注解注入集合類的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
selenium+java+chrome環(huán)境搭建的方法步驟
這篇文章主要介紹了selenium+java+chrome環(huán)境搭建的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07
java使用Feign實現(xiàn)聲明式Restful風格調用
這篇文章主要為大家詳細介紹了java使用Feign實現(xiàn)聲明式Restful風格調用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04

