logback最實用配置與元件詳解
完整示例
首先展示一個完整的示例以供參考。
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="10 seconds" debug="false"> <contextName>logback</contextName> <timestamp key="ts" datePattern="yyyyMMdd'T'HHmmss"/> <property name="log.path" value="F:/logs/logback" /> <property name="log.bak.path" value="F:/logs/logback/bak" /> <property name="charset" value="UTF-8" /> <property name="log.pattern.one" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/> <property name="log.pattern.two" value="[${ts}] [%5level] %logger{0} - %msg%n"/> <!--輸出到控制檯--> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <encoder> <Pattern>${log.pattern.two}</Pattern> <charset>${charset}</charset> </encoder> </appender> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/context-info.log</file> <append>true</append> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <Pattern>${log.pattern.one}</Pattern> <charset>${charset}</charset> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${log.bak.path}/info/context-info-%d{yyyyMMddHHmm}-%i.zip</fileNamePattern> <maxHistory>10</maxHistory> <maxFileSize>1KB</maxFileSize> <totalSizeCap>1MB</totalSizeCap> </rollingPolicy> </appender> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/warn.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${log.bak.path}/warn/warn-%i.zip</fileNamePattern> <minIndex>1</minIndex> <maxIndex>5</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>1KB</maxFileSize> </triggeringPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <Pattern>${log.pattern.one}</Pattern> <charset>${charset}</charset> </encoder> </appender> <appender name="ERROR" class="ch.qos.logback.core.FileAppender"> <file>${log.path}/error.log</file> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <Pattern>${log.pattern.one}</Pattern> <charset>${charset}</charset> </encoder> </appender> <!-- <logger name="org.springframework.web" level="info"/>--> <!-- <logger name="org.curitis.test" level="info" addtivity="true">--> <!-- <appender-ref ref="INFO"/>--> <!-- </logger>--> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="INFO" /> <appender-ref ref="WARN" /> <appender-ref ref="ERROR" /> </root> </configuration>
測試程式碼:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LogTest { private static final Logger logger = LoggerFactory.getLogger(LogTest.class); public static void main(String[] args) { while (true) { logger.info("info"); logger.warn("warn"); logger.error("error"); } } }
日誌級別
日誌級別從低到高分為:
- TRACE
- DEBUG
- INFO
- WARN
- ERROR
- FATAL
configuration
scan:當此屬性設定為true時,配置檔案如果發生改變,將會被重新載入,預設值為true
scanPeriod:設定監測配置檔案是否有修改的時間間隔,如果沒有給出時間單位,預設單位是毫秒。當scan為true時,此屬性生效。預設的時間間隔為1分鐘。
debug:當此屬性設定為true時,將打印出logback內部日誌資訊,實時檢視logback執行狀態。預設值為false。
property
配置屬性,以便於在其他配置使用,一些公用的配置例如,日誌輸出格式,日誌檔案路徑等就可以配置為property。
<timestamp key="ts" datePattern="yyyyMMdd'T'HHmmss"/>
<property name="log.path" value="F:/logs/logback/" />
<property name="log.bak.path" value="F:/logs/bak/" />
<property name="charset" value="UTF-8" />
<property name="log.pattern.one" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
<property name="log.pattern.two" value="[${ts}] [%5level] %logger{0} - %msg%n"/>
appender
我願意吧appender翻譯為輸出器,appender主要有3中:
- ConsoleAppender
- RollingFileAppender
- FileAppender
ConsoleAppender是輸出到控制檯,RollingFileAppender是滾動日誌輸出器,一般用於輸出需要儲存一段時間的日誌,FileAppender一般是資料量比較小特別關注的日誌輸出器。
encoder
每一個appender都需要一個encoder,主要用於指定輸出日誌格式和編碼。
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</Pattern>
<charset>UTF-8</charset>
</encoder>
過濾器(filter)
Appender可以配置多個過濾器,過濾器主要有3中:
- ThresholdFilter
- LevelFilter
- EvaluatorFilter
ThresholdFilter
臨界值過濾器,Threshold是閾值,臨界值的意思,表示過濾掉低於指定臨界值的日誌。
當日志級別等於或高於臨界值時,過濾器返回NEUTRAL,當日志級別低於臨界值時,日誌會被拒絕。
例如,過濾掉所有低於INFO級別的日誌:
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
過濾器,執行一個過濾器會有返回個列舉值,即DENY,NEUTRAL,ACCEPT其中之一。返回DENY,日誌將立即被拋棄不再經過其他過濾器;返回NEUTRAL,有序列表裡的下個過濾器過接著處理日誌;返回ACCEPT,日誌會被立即處理,不再經過剩餘過濾器。
過濾器被新增到<Appender> 中,為<Appender> 新增一個或多個過濾器後,可以用任意條件對日誌進行過濾。<Appender> 有多個過濾器時,按照配置順序執行。
LevelFilter
級別過濾器,level是級別的意思,會根據日誌級別進行過濾。
如果日誌級別等於配置級別,過濾器會根據onMath和onMismatch的配置接收或拒絕日誌,onMath和onMismatch可以配置下面3個值:
- DENY:日誌將立即被拋棄不再經過其他過濾器
- NEUTRAL:下個過濾器過接著處理日誌
- ACCEPT:日誌會被立即處理,不再經過剩餘過濾器
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
通過LevelFilter可以將指定級別的日誌輸出到指定檔案。
EvaluatorFilter
表示式過濾器,評估、鑑別日誌是否符合指定條件。需要額外的兩個jar包:
- commons-compiler.jar
- janino.jar
表示式過濾器很強大,但是很少用,它可以根據event、message、hrowable、logger、level、loggerContext、marker等過濾。
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>return message.contains("connection fail");</expression>
</evaluator>
<OnMatch>ACCEPT</OnMatch>
<OnMismatch>DENY</OnMismatch>
</filter>
上面的示例是隻接收日誌中包含connection fail的日誌,還可以根據throwable過濾出指定異常的的日誌資訊,輸出到指定檔案,但是一般沒有必要。
Policy
Policy主要有3個:
- SizeBasedTriggeringPolicy
- FixedWindowRollingPolicy
- SizeBasedTriggeringPolicy
FixedWindowRollingPolicy一般和SizeBasedTriggeringPolicy組合使用。
SizeAndTimeBasedRollingPolicy
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/context-info.log</file>
<append>true</append>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<Pattern>${log.pattern.one}</Pattern>
<charset>${charset}</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.bak.path}/info/context-info-%d{yyyyMMddHHmm}-%i.zip</fileNamePattern>
<maxHistory>10</maxHistory>
<maxFileSize>1KB</maxFileSize>
<totalSizeCap>1MB</totalSizeCap>
</rollingPolicy>
</appender>
SizeAndTimeBasedRollingPolicy需要注意的地方是fileNamePattern的配置。 既然是時間和大小,那麼就要設定時間的策略,時間策略就是根據fileNamePattern的%d{yyyyMMddHHmm}部分來的。 %d{yyyyMMddHHmm}就是每分鐘滾動一次,生成一個新的檔案 %d{yyyyMMddHH}就是每一小時滾動一次,生成一個新的檔案 %d{yyyyMMdd}就是每天滾動一次,生成一個新的檔案
%i部分是指定大小的,因為不知道日誌有多少,所以是%i,實際上根據maxFileSize來生成,一個檔案大小達到maxFileSize就生成一個新檔案。
例如上面的配置就是${log.path}/context-info.log檔案一分鐘內就會至少會生成一個檔案,${log.bak.path}/info/context-info-201909281200-0.zip。
如果一分鐘之內context-info.log超過1kb就會生成多個。
上面的maxFileSize是為了測試設定很小,實際可以設定大一些,例如,如果日誌要存入hdfs就可以把maxFileSize設定為128M,這樣剛好是一個hdfs的block。
FixedWindowRollingPolicy與SizeBasedTriggeringPolicy
<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/warn.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${log.bak.path}/warn/warn-%i.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>5</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>1KB</maxFileSize>
</triggeringPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<Pattern>${log.pattern.one}</Pattern>
<charset>${charset}</charset>
</encoder>
</appender>
固定視窗策略,最重要的配置是maxIndex,就是最大下標。結合SizeBasedTriggeringPolicy,達到指定檔案大小就會生成一個新的壓縮檔案。
例如,上面的配置就會最多生成5個壓縮檔案,每當warn.log達到1kb的時候就會生成一個warn-i.zip的壓縮檔案。
壓縮檔案最多5個,會迴圈覆蓋。
logger
給指定的包或者類配置日誌輸出
<logger name="org.springframework.web" level="info"/>
<logger name="org.curitis.test" level="info" addtivity="false">
<appender-ref ref="INFO"/>
</logger>
logger預設使用的日誌輸出地方是控制檯,可以通過appender-ref修改。level指定輸出級別,addtivity設定為false表示,不在其他日誌輸出器中輸出了。
root
配置日誌輸出器
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="INFO" />
<appender-ref ref="WARN" />
<appender-ref ref="ERROR" />
</root>
level指定公共預設最低輸出級別,例如如果設定為WARN,則低於WARN的資訊都不會輸出
其他
包含其他配置檔案,可以是一些固定的配置,例如指定庫的日誌輸出配置檔案。
<include resource="classpath:logback-base.xml" />
指定環境環境:
<springProfile name="dev">
<logger name="org.springframework" level="WARN"/>
</springProfile>
彩色日誌: org.springframework.boot.logging.logback.ColorConverter org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter
完整示例
首先展示一個完整的示例以供參考。
<?xml version="1.0" encoding=&
nginx入門、安裝配置與使用詳解
本文內容: 1. nginx 簡介 2. nginx 安裝配置 3. nginx使用 4.nginx配置location總結及rewrite規則寫法
一、Nginx 的三大功能
1.HTTP伺服器
Nginx
本文內容:
1. nginx 簡介
2. nginx 安裝配置
3. nginx使用
4.nginx配置location總結及rewrite規則寫法
一、Nginx 的三大功能
1.HTTP伺服器
Nginx是一個
作者:李天煒
Log4j是Apache的一個開放原始碼專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案、GUI元件、甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護程序等;我們也可以控制每一條日誌的輸出格式;通 Tomcat系列之伺服器的安裝與配置以及各元件詳解
大綱
一、前言
二、安裝與配置Tomcat
三、Tomcat 目錄的結構
四、Tomcat 配置檔案
注,本文的測試的作業系統為CentOS 6.4 x86_64,軟體版本為jdk-7u40、apache 指定 守護 添加 經驗 nor mod rand connect 參數詳解 課程主題:(地圖添加與配置參數詳細講解)
【相關工具】
1.D:\mirserver\Mir200\Envir\MapInfo.txt 地圖配置文件
2.D:\mirserver\Mir200\M this sql 引入 apache2 cpu load fine 宕機 pri require nagios 安裝與部署—————— 1、安裝前準備(1)創建nagios用戶和用戶組 [root@localhost ~]#groupadd nagios nbsp strong figure 分割 不能訪問 org 事先 zlib 編輯 1、背景
FastDFS 是一款開源的、分布式文件系統(Distributed File System),由淘寶開發平臺部資深架構師余慶開發。該開源項目的主頁是 http://code.go 博客 交流 微信公眾號 str ID 程序輸入點 個人學習 無法 slc
不多說,直接上幹貨!
notecase是什麽?
一個按照樹狀結構來組織文檔內容的筆記管理程序
1、雙擊
lib http 說明 dep java ee 訪問時間 參數 windows -c 1. 文件結構
1.0. 源碼目錄
src/main/Java
com.thinkgem.jeesite
Jeesite平臺目錄
├ common
公共模 哪些 受限 假設 全局 上下 clas ftp cells cas 轉自:https://blog.csdn.net/bluishglc/article/details/42398811
很多情況下,我們希望限制ftp用戶只能在其主目錄下(root dir)下活動,不允
Dockerfile製作映象步驟 在根目錄下建立dockerfile資料夾 mkdir dockfile 在資料夾下建立Dockerfile檔案 touch Dockerfile 編輯Dockerfile檔案 vim Dockerfile 檔案內容如下: #版本資訊 FROM centos \n 系統環境 dfa 文件比較 打包 body XML contex 字符 Spring Boot在工作中是用到的越來越廣泛了,簡單方便,有了它,效率提高不知道多少倍。Spring Boot配置文件對Spring Boot來說就是入門和基礎,經常會用到,所以寫下做個總結以
一、Android控制元件架構:
控制元件大致分為兩類:ViewGroup控制元件與View控制元件。View是繪製在螢幕上的使用者能與之互動的一個物件。而ViewGroup則是一個用於存放其他Vi
環境
vmware14.1虛擬機器中三臺ubuntu16.04
ip地址對映關係:如下
127.0.0.1 localhost
192.168.184.131 vm-01
192.168.184.132 vm-02
192.168.184.133
前言
關於UE4的移動元件,我寫了一篇非常詳細的分析文件。由於篇幅比較大,我將其拆分成三個部分。分別從移動框架與實現原理,移動的網路同步,移動元件的優化與改造三個方面來寫。這三篇文件中難免有問題和漏洞,所以我也會在發現問題時及時更新和修改,也希望大家能給出一些
ISAP演算法
ISAP(Improved Shortest Augumenting Path)演算法是改進版的SAP演算法,如果對效率要求很高的時候,可以用該演算法。
(1)概述:演算法基於這樣的一個事實:每次增廣之後,任意結點到匯點(在殘餘網路中)的最短距離都不會
logback 常用配置詳解(二) <appender>
<appender>:
<appender>是<configuration>的子節點,是負責寫日誌的元件。
<appender>有兩個必要
不多說,直接上乾貨!
1、修改命令提示符λ為$
首先,我們看到
進入解壓後的cmder的目錄,進入vendor,開啟init.bat檔案。
修改第15行的程式碼
@prompt $E[1;32;40m$P$S
This is the main Apache HTTP server configuration file. It contains the
# configuration directives that give the server its instructions.
# See <UR 相關推薦
logback最實用配置與元件詳解
1105_nginx入門、安裝配置與使用詳解
nginx入門安裝配置與使用詳解
Log4j的配置與使用詳解
Tomcat系列之伺服器的安裝與配置以及各元件詳解
傳奇添加地圖與配置參數詳解
nagios 服務端與客戶端監控安裝與詳細配置,各配置文件詳解
FastDFS分布式文件系統&Nginx負載均衡最小環境安裝配置[超級詳解]
notecase的下載與安裝(全網最詳細)(圖文詳解)
JEESITE快速開發平臺(三)項目文件結構與配置文件詳解
vsftpd 配置:chroot_local_user與chroot_list_enable詳解
docker如何最快速的方式建立映象並在建立時安裝配置好jdk(詳解)(第五篇)共五篇
史上最全面的Spring Boot配置文件詳解
《Android群英傳》學習筆記之Android控制元件架構與自定義控制元件詳解
ubuntu16.04叢集之間配置SSH免密碼登陸與原理詳解
UE4移動元件詳解(一)——移動框架與實現原理
網路最大流-ISAP演算法詳解與模板
spring-boot-starter-logging logback常用配置之標籤詳解
全網最詳細的一個超級好用的命令列工具【Cmder】的安裝之後的一些配置(圖文詳解)
Windows 7作業系統下Apache的安裝與配置(圖文詳解)