logback日誌元件的配置和使用
阿新 • • 發佈:2019-02-12
1. 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來訪問日誌的功能。
2. maven依賴
<!-- logback+slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.0</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>0.9.28</version> <type>jar</type> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>0.9.28</version> <type>jar</type> </dependency>
如果你沒有使用maven,那麼你自己去下載jar包吧...
3. 配置和使用
1. 日誌使用
我們使用org.slf4j.LoggerFactory,就可以直接使用日誌了。
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
使用:
@Controller @RequestMapping(value = "") public class IndexController extends BaseController { /** * Success * @param response * @throws IOException */ @RequestMapping(value = "") @ResponseBody public void hello(HttpServletResponse response) throws IOException { logger.debug("DEBUG TEST 這個地方輸出DEBUG級別的日誌"); logger.info("INFO test 這個地方輸出INFO級別的日誌"); logger.error("ERROR test 這個地方輸出ERROR級別的日誌"); } }
2. 在控制檯輸出特定級別的日誌
logback的配置檔案都放在/src/main/resource/資料夾下的logback.xml檔案中。其中logback.xml檔案就是logback的配置檔案。只要將這個檔案放置好了之後,系統會自動找到這個配置檔案。
下面的配置中,我們輸出特定的ERROR級別的日誌:
<?xml version="1.0"?> <configuration> <!-- ch.qos.logback.core.ConsoleAppender 控制檯輸出 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 日誌級別 --> <root> <level value="error" /> <appender-ref ref="console" /> </root> </configuration>
結果只在控制檯輸出ERROR級別的日誌。
3. 設定輸出多個級別的日誌
<?xml version="1.0"?>
<configuration>
<!-- ch.qos.logback.core.ConsoleAppender 控制檯輸出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 日誌級別 -->
<root>
<level value="error" />
<level value="info" />
<appender-ref ref="console" />
</root>
</configuration>
設定兩個level,則可以輸出 ERROR和INFO級別的日誌了。
4. 設定檔案日誌
<?xml version="1.0"?>
<configuration>
<!-- ch.qos.logback.core.ConsoleAppender 控制檯輸出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<!-- ch.qos.logback.core.rolling.RollingFileAppender 檔案日誌輸出 -->
<appender name="file"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>/home/test.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>/home/test-%d{yyyy-MM-dd}.log
</FileNamePattern>
<MaxHistory>10</MaxHistory>
<TimeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>5MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
</pattern>
</layout>
</appender>
<!-- 日誌級別 -->
<root>
<!-- 定義了ERROR和INFO級別的日誌,分別在FILE檔案和控制檯輸出 -->
<level value="error" />
<level value="info" />
<appender-ref ref="file" />
<appender-ref ref="console" />
</root>
<!--精確設定每個包下面的日誌-->
<logger name="com.xxx" additivity="false">
<level value="info" />
<appender-ref ref="file" />
<appender-ref ref="console" />
</logger>
</configuration>
詳細參考:http://logback.qos.ch/manual/configuration.html