日志技術(shù)具備的優(yōu)勢
可以將系統(tǒng)執(zhí)行的信息選擇性的記錄到指定的位置(控制臺、文件中、數(shù)據(jù)庫中)?!?br> 可以隨時以開關(guān)的形式控制是否記錄日志,無需修改源代碼。
日志體系結(jié)構(gòu)
Logback日志框架
Logback是由log4j創(chuàng)始人設(shè)計的另一個開源日志組件,性能比log4j要好
Logback是基于slf4j的日志規(guī)范實現(xiàn)的框架。
Logback主要分為三個技術(shù)模塊:
logback-core: logback-core 模塊為其他兩個模塊奠定了基礎(chǔ),必須有。
logback-classic:它是log4j的一個改良版本,同時它完整實現(xiàn)了slf4j API。
logback-access模塊與Tomcat和Jetty 等servlet容器集成,以提供HTTP訪問日志功能
使用Logback需要使用哪幾個模塊,各自的作用是什么。
slf4j-api:日志規(guī)范
logback-core:基礎(chǔ)模塊。
logback-classic:它是log4j的一個改良版本,同時它完整實現(xiàn)了slf4j API
這些都可以去Logback或slf4j官方網(wǎng)站下載
使用Logback
完成這些步驟便可使用日志對象輸出日志信息:
public class Test {
//創(chuàng)建LogBack對象
public static final Logger LOGGER=LoggerFactory.getLogger("Test.class");
public static void main(String[] args) {
try {
LOGGER.debug("main開始執(zhí)行");
LOGGER.info("第二行日志");
int a=10,b=0;
LOGGER.trace("a="+a);
LOGGER.trace("b="+b);
System.out.println(a/b);
} catch (Exception e) {
e.printStackTrace();
LOGGER.error("發(fā)生錯誤,"+e);
}
}
}
logback.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--
CONSOLE :表示當前的日志信息是可以輸出到控制臺的。
-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!--輸出流對象 默認 System.out 改為 System.err則輸出信息變成紅色-->
<target>System.out</target>
<encoder>
<!--格式化輸出:%d表示日期,%-5level:級別比如DEBUG、INFO 從左顯示5個字符寬度 %c在哪個class里打的日志
%thread表示線程名比如main %msg:日志消息,%n是換行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%n</pattern>
</encoder>
</appender>
<!-- File是輸出的方向通向文件的 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!--日志輸出路徑-->
<file>D:/Soft/Log/data.log</file>
<!--指定日志文件拆分和壓縮規(guī)則-->
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--通過指定壓縮文件名稱,來確定分割文件方式 一旦到達一定大小按照下面的格式來拆分文件壓縮-->
<fileNamePattern>D:/Soft/Log/data2-%d{yyyy-MM-dd}.log%i.gz</fileNamePattern>
<!--文件拆分大小 即文件到了1MB就開辟第二個文件存儲-->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
</appender>
<!--
level:用來設(shè)置打印級別,大小寫無關(guān),級別程度依次是:TRACE < DEBUG < INFO < WARN < ERROR 默認debug
可以通過設(shè)置日志的輸出級別來控制哪些日志信息輸出或者不輸出 只輸出級別不低于設(shè)定級別的日志信息 ALL 和 OFF分別是打開全部日志信息和關(guān)閉全部
<root>可以包含零個或多個<appender-ref>元素,標識這個輸出位置將會被本日志級別控制。
-->
<root level="ALL">
<!-- 注意:如果這里不配置關(guān)聯(lián)打印位置,該位置將不會記錄日志-->
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
運行Test將在控制臺和xml設(shè)置的文件路徑中看到日志信息:
2023-06-15 16:15:49.941 [DEBUG] Test.class [main] : main開始執(zhí)行
2023-06-15 16:15:49.957 [INFO ] Test.class [main] : 第二行日志
2023-06-15 16:15:49.964 [TRACE] Test.class [main] : a=10
2023-06-15 16:15:49.964 [TRACE] Test.class [main] : b=0
2023-06-15 16:15:49.966 [ERROR] Test.class [main] : 發(fā)生錯誤,java.lang.ArithmeticException: / by zero
java.lang.ArithmeticException: / by zero
如果系統(tǒng)上線后只想記錄一些錯誤的日志信息或者不想記錄日志了,怎么辦?
可以通過設(shè)置日志的輸出級別來控制哪些日志信息輸出或者不輸出。文章來源:http://www.zghlxwxcb.cn/news/detail-499987.html
日志級別級別程度依次是:TRACE<DEBUG<INFO<WARN<ERROR;默認級別是debug (忽略大小寫),對應其方法。
作用:用于控制系統(tǒng)中哪些日志級別是可以輸出的,只輸出級別不低于設(shè)定級別的日志信息。
ALL和OFF分別是打開全部日志信息,及關(guān)閉全部日志信息。
具體在root標簽的level屬性中設(shè)置日志級別。文章來源地址http://www.zghlxwxcb.cn/news/detail-499987.html
到了這里,關(guān)于Java Logback日志框架概述及l(fā)ogback.xml詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!