电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

詳解Springboot之Logback的使用學習

瀏覽:5日期:2023-03-10 09:23:58
目錄一、導入依賴二、配置文件解析三、配置文件結構四、各個組件的作用五、Logger組件六、logger屬性七、Appender組件一、導入依賴

普通項目

<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.11</version></dependency><dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.11</version></dependency>

springboot項目

<!--該依賴已經集成了logback--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>二、配置文件解析

Logback默認會到類路徑下找logback-test.xml and logback.xml

Spring Boot 會在 classpath 下查找是否有 logback-test.groovy、logback-test.xml、logback.groovy 或者 logback.xml,如果都找不到的話,才會加載項目路徑下的 logback-spring.xml

三、配置文件結構

詳解Springboot之Logback的使用學習

四、各個組件的作用

logger: 日志記錄器,root是特殊的logger-頂層logger,因為logger具有繼承關系,稍后介紹

appender: 配置日志文件輸出目的地

encoder: 控制日志輸出格式,它是借助于layout實現的

rollingPolicy: RollingFileAppender具有該子元素,指定發生滾動時的行為

triggeringPolicy: RollingFileAppender具有該子元素,指定何時發生滾動過程,一般不用配置該元素,因為最受歡迎的TimeBasedRollingPolicy ,它實現了rolling policy同時也實現了triggering policy。

filter: 對appender收到的日志進行過濾,只有滿足Filter條件的日志才輸出到日志文件

五、Logger組件

logger組件具有父子層級關系,root是最頂層的logger。logger記錄器是命名實體。它們的名稱區分大小寫,并且遵循分層命名規則.

如果一個記錄器的名稱后跟一個點,則該記錄器是另一個記錄器的祖先,該后跟點的名稱是其后代記錄器名稱的前綴。如果記錄器與子記錄器之間沒有祖先,則稱該記錄器為子記錄器的父項。例如,名為'com.foo'的記錄器是名為'com.foo.Bar'的記錄器的父項。同樣, 'java'是'java.util'和'java.util.Vector'的祖先記錄器。大多數開發人員都應該熟悉這種命名方案。

logger日志級別繼承

如果未為給定的記錄器分配一個級別,則它將從其最接近的祖先那里繼承一個已分配的級別。例如:給定記錄器L的有效級別等于其層次結構中的第一個非空級別,從L本身開始, 然后在層次結構中向上尋找直到root logger。為了確保所有記錄器最終都可以繼承級別,root logger始終具有分配的級別,root logger默認級別是DEBUG。

注意:如果日志記錄請求的級別高于或等于記錄器的有效級別,則該日志請求是有效的。日志級別按以下順序排序: TRACE < DEBUG < INFO < WARN < ERROR。

logger關聯的appender繼承

一個logger可以配置多個appender,logger輸出的日志會輸出到當前記錄器綁定的appender和父級們logger(直到root logger)綁定的appender,可以設置additivity 屬性為false,則logger輸出的日志僅會輸出到當前記錄器綁定的appender六、logger屬性 name:指定全限定包名 level:日志輸出級別,如果沒有配置,則參考上面的級別繼承 additivity:默認為true,參考上面的appender繼承。

如果additivity為true,會存在重復輸出日志情況,如下所示

<configuration> <appender name='STDOUT' class='ch.qos.logback.core.ConsoleAppender'> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <logger name='chapters.configuration'> <appender-ref ref='STDOUT' /> </logger> <root level='debug'> <appender-ref ref='STDOUT' /> </root></configuration>

那么chapters.configuration包下的日志會輸出兩遍到console控制臺,如下所示

14:25:36.343 [main] INFO chapters.configuration.MyApp3 - Entering application.14:25:36.343 [main] INFO chapters.configuration.MyApp3 - Entering application.14:25:36.359 [main] DEBUG chapters.configuration.Foo - Did it again!14:25:36.359 [main] DEBUG chapters.configuration.Foo - Did it again!14:25:36.359 [main] INFO chapters.configuration.MyApp3 - Exiting application.14:25:36.359 [main] INFO chapters.configuration.MyApp3 - Exiting application.

七、Appender組件

配置日志輸出的目的地,常用的有ConsoleAppender、FileAppender 、RollingFileAppender

ConsoleAppender

<appender name='STDOUT' class='ch.qos.logback.core.ConsoleAppender'> <!--默認System.out,也可以指定System.error --> <target>System.out</target> <!-- encoders 默認類型ch.qos.logback.classic.encoder.PatternLayoutEncoder --> <encoder> <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern> </encoder> </appender>

寫日志到標準輸出流,可以配置target屬性為system.out,也可以指定System.error,默認System.out

FileAppender

包含的子元素有

append:如果為true,則追加到已存在的日志文件,否則截斷現有文件,默認為true file: 指定日志寫入文件的名字。如果文件不存在,則創建包括父級目錄。windows系統要避開“”,正確例子可以指定為c:/temp/test.log或c:temptest.log encoder: 輸出的格式 RollingFileAppender

RollingFileAppender

擴展了FileAppender,具有滾動更新日志文件的功能;例如,RollingFileAppender可以登錄到一個名為log.txt的文件,一旦滿足某個條件,就可以保存當前日志文件,并滾動輸出到新的日志文件。

包含的子元素有

append:如果為true,則追加到已存在的日志文件,否則截斷現有文件,默認為true file: 指定日志寫入文件的名字。如果文件不存在,則創建包括父級目錄。windows系統要避開“”,正確例子可以指定為c:/temp/test.log或c:temptest.log encoder:輸出的格式 rollingPolicy: 指定RollingFileAppender發生滾動時的行為 triggeringPolicy:指定RollingFileAppender何時發生滾動過程

rollingPolicy

rollingPolicy常用的有TimeBasedRollingPolicy、SizeAndTimeBasedRollingPolicy

TimeBasedRollingPolicy

TimeBasedRollingPolicy是最受歡迎的滾動策略。它基于時間進行滾動,可以是按月或按天等。TimeBasedRollingPolicy承擔滾動以及觸發所述滾動的責任。它實現了rolling policy同時也實現了triggering policy。包含的子元素有

fileNamePattern:必選;它的值應包括文件名以及適當放置的%d轉換說明符。所述 %d由指定的轉換說明可包含日期和時間模式 java.text.SimpleDateFormat類。如果省略了日期和時間模式,則采用默認模式 yyyy-MM-dd;可以指定多個%d,但是只有一個主要的,其他的都要使用‘aux’標記,多個%d允許你組織對日志文件歸類,例如按照年月分文件夾/var/log/%d{yyyy/MM, aux}/myapplication.%d{yyyy-MM-dd}.log maxHistory:設置存檔文件保存時間,日志文件至少保存 15 天,因為有些異常具備以“周”為頻次發生的特點。 totalSizeCap:控制歸檔文件的大小

SizeAndTimeBasedRollingPolicy

支持按照時間拆分后,再按文件大小拆分

<appender name='ROLLING' class='ch.qos.logback.core.rolling.RollingFileAppender'> <file>mylog.txt</file> <rollingPolicy class='ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy'> <!-- rollover daily --> <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern> <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --> <maxFileSize>100MB</maxFileSize> <maxHistory>60</maxHistory> <totalSizeCap>20GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%msg%n</pattern> </encoder></appender>

'%i'表示當日志文件達到“maxFileSize”它將按照遞增序列(以0開始)歸檔日志。

triggering policy

SizeBasedTriggeringPolicy

該triggering policy通過配置一個maxFileSize參數,當日志文件超過該閾值,會通知RollingFileAppender 觸發日志翻滾。但一般triggering policy可以不用配置,TimeBasedRollingPolicy 已經完美集成了。

補充:以上Appender都是本地記錄日志,logback也支持網絡輸出日志、本地數據、郵件等;后續如果有需要再來研究。logback還可以使用AsyncAppender異步記錄日志。

Encoder

encoder負責轉換事件為字節數組并將字節數組寫入輸出流中。PatternLayoutEncoder 是最常用的encoder,該類通過使用PatternLayout來格式化日志事件。我們可以直接配置PatternLayoutEncoder ,而不用配置PatternLayout,它默認使用PatternLayout進行格式輸出。

layout

負責轉換事件成字符串,我們可以自定義layout,然后通過encoder引用

<encoder class='ch.qos.logback.core.encoder.LayoutWrappingEncoder'> <layout /> </encoder>

PatternLayout

它將日志事件轉換成字符串,但是可以自定義字符串通過調整PatternLayout的轉換模式。

PatternLayout的轉換模式跟C語言的printf()函數緊密相關。常用的模式有:

% d{pattern}: 日期

% level 日志級別

%thread 線程名稱

%class 全限定類名,日志請求記錄所在的類

%method 日志請求記錄所在的方法

%line 日志請求記錄的行號

%n 換行

%logger{length} 輸出日志logger記錄器的名字,length指定輸出名字長度,logback會智能縮寫而不丟失語義。

%msg 輸出日志記錄器記錄的消息

<encoder class='ch.qos.logback.classic.encoder.PatternLayoutEncoder'> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS,CTT} %-5level [%thread] [%class:%line] %logger{50} - %msg%n</pattern></encoder>

多個模式之間分隔符,在大多數情況下,文字需包含空格或其他分隔字符(’[’,’]’,’-’),這樣就不會與轉換詞混淆

Filter

對appender收到的日志調用decide方法進行過濾,只有滿足Filter條件的日志才輸出到日志文件,decide方法有三個返回值,DENY、ACCEPT、NEUTRAL

如果返回的值為DENY,則立即刪除日志事件,而不咨詢其余的篩選器; 如果返回的值是NEUTRAL中性的,則查詢列表中的下一個篩選器,如果沒有其他篩選器可供查詢,則日志事件將正常處理; 如果返回值為ACCEPT,則會立即處理日志事件,跳過其余篩選器的調用。

LevelFilter

該過濾器對日志的級別過濾,如果事件日志級別等于配置的級別,過濾器接受或者拒絕該事件日志,依賴于onMatch 和 onMismatch屬性

<appender name='CONSOLE' class='ch.qos.logback.core.ConsoleAppender'> <filter class='ch.qos.logback.classic.filter.LevelFilter'> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>%-4relative [%thread] %-5level %logger{30} - %msg%n </pattern> </encoder></appender>

ThresholdFilter

過濾低于指定閾值的事件。對于等于或高于閾值的事件,將在調用其()方法時響應NEUTRAL 。但是,級別低于閾值的事件將被拒絕。

<!-- deny all events with a level below INFO, that is TRACE and DEBUG --> <filter class='ch.qos.logback.classic.filter.ThresholdFilter'> <level>INFO</level> </filter>

EvaluatorFilter

EvaluatorFilter 是封裝了的通用過濾器 EventEvaluator。顧名思義, 評估對象是否滿足給定事件的給定條件。在匹配和不匹配時,托管將分別返回由onMatch 或onMismatch屬性指定的值。GEventEvaluator 實現了EventEvaluator,通過子元素采用任意Groovy語言布爾表達式作為評估標準的具體實現JaninoEventEvaluator實現了EventEvaluator,通過子元素采用任意Java語言塊返回布爾值作為評估標準。

uatorFilter

EvaluatorFilter 是封裝了的通用過濾器 EventEvaluator。顧名思義, 評估對象是否滿足給定事件的給定條件。在匹配和不匹配時,托管將分別返回由onMatch 或onMismatch屬性指定的值。GEventEvaluator 實現了EventEvaluator,通過子元素采用任意Groovy語言布爾表達式作為評估標準的具體實現JaninoEventEvaluator實現了EventEvaluator,通過子元素采用任意Java語言塊返回布爾值作為評估標準。

EvaluatorFilter 也可通過子元素支持正則匹配。

到此這篇關于詳解Springboot之Logback的使用學習的文章就介紹到這了,更多相關Logback詳解內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 鑫达滑石-辽宁鑫达滑石集团 | 成都网站建设制作_高端网站设计公司「做网站送优化推广」 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 微型气象仪_气象传感器_防爆气象传感器-天合传感器大全 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 亿诺千企网-企业核心产品贸易 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 自清洗过滤器-全自动自清洗过反冲洗过滤器 - 中乂(北京)科技有限公司 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 潍坊青州古城旅游景点攻略_青州酒店美食推荐-青州旅游网 | 螺纹三通快插接头-弯通快插接头-宁波舜驰气动科技有限公司 | 上海佳武自动化科技有限公司| 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 深圳3D打印服务-3D打印加工-手板模型加工厂-悟空打印坊 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 亿诺千企网-企业核心产品贸易 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 过跨车_过跨电瓶车_过跨转运车_横移电动平车_厂区转运车_无轨转运车 | 工业制氮机_psa制氮机厂家-宏骁智能装备科技江苏有限公司 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 |