1. 程式人生 > >logback(四): 輸出日誌到不同檔案

logback(四): 輸出日誌到不同檔案

為了方便檢視和歸檔:
不同包的日誌可能要放到不同的檔案中,如service層和dao層的日誌;
不同日誌級別:除錯、資訊、警告和錯誤等也要分檔案輸出。

一、根據包輸出,通過logger的name屬性指定不同的包

1. 建立不同包下的兩個類:

1)ObligationService.java

    package com.john.service;  
      
    @Service  
    public class ObligationService {  
        static final Logger log = LoggerFactory.getLogger(ObligationService.class);  
      
        @Resource  
        ObligationDao dao;  
          
        public void obligate() {  
            log.debug("obligate start...");  
            dao.queryObligations();  
            log.error("An error occurred during the progress");  
            log.debug("obligate end...");  
        }  
    }  

2) ObligationDao.java 

    package com.john.dao;  
      
    @Repository  
    public class ObligationDao {  
        static final Logger log = LoggerFactory.getLogger(ObligationDao.class);  
          
        public void queryObligations() {  
            log.debug("query obligations start...");  
            log.error("An error occurred during the query");  
            log.debug("query obligations end...");  
        }  
    }  

2,在logback(-test).xml中新增:

    <appender name="serviceAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <file>/logs/bribery.log</file>  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <fileNamePattern>/logs/bribery-%d{yyyy-MM-dd}.log</fileNamePattern>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>  
        </encoder>  
    </appender>  
      
    <appender name="daoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <file>/logs/venality.log</file>  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <fileNamePattern>/logs/venality-%d{yyyy-MM-dd}.log</fileNamePattern>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>  
        </encoder>  
    </appender>  
      
    <logger name="com.john.service" level="DEBUG" additivity="false">  
        <appender-ref ref="serviceAppender" />  
    </logger>  
      
    <logger name="com.john.dao" level="DEBUG" additivity="false">  
        <appender-ref ref="daoAppender" />  
    </logger>  

在類路徑下建立Spring的beans.xml檔案:(beans節點省略)

<context:component-scan base-package="com.john" /> 

3,測試方法:

    @Test  
    public void dispatchByPackageTest() {  
        AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");  
        ObligationService service = ctx.getBean(ObligationService.class);  
        service.obligate();  
    }  

執行測試後,
bribery.log:
15:59:59.839 [main] DEBUG c.j.s.ObligationService - obligate start...
15:59:59.844 [main] ERROR c.j.s.ObligationService - An error occurred during the progress
15:59:59.844 [main] DEBUG c.j.s.ObligationService - obligate end...

venality.log:
15:59:59.844 [main] DEBUG c.j.d.ObligationDao - query obligations start...
15:59:59.844 [main] ERROR c.j.d.ObligationDao - An error occurred during the query
15:59:59.844 [main] DEBUG c.j.d.ObligationDao - query obligations end...

二、根據日誌級別輸出

這裡把所有級別為ERROR的日誌輸出到一個檔案中

1. 修改logback(-test).xml檔案

serviceAppender和daoAppender都加入以下級別過濾器,這樣錯誤日誌就不會在bribery.log和venality.log中列印了:

    <filter class="ch.qos.logback.classic.filter.LevelFilter">  
        <level>ERROR</level>  
        <onMatch>DENY</onMatch>  
        <onMismatch>ACCEPT</onMismatch>  
    </filter>  

新建一個錯誤日誌的appender:

    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">  
        <file>/logs/error.log</file>  
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
            <fileNamePattern>/logs/venality-%d{yyyy-MM-dd}.log</fileNamePattern>  
        </rollingPolicy>  
        <encoder>  
            <pattern>%d{HH:mm:ss.SSS} %thread %X{invokeNo} %logger{40} %msg%n</pattern>  
        </encoder>  
        <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印錯誤日誌 -->  
            <level>ERROR</level>  
            <onMatch>ACCEPT</onMatch>  
            <onMismatch>DENY</onMismatch>  
        </filter>  
    </appender>  

name為com.john.dao和com.john.service的logger都加上errorAppender:

    <appender-ref ref="errorAppender" />  

2. 執行上面的測試方法,service和dao的錯誤日誌都列印到error.log檔案中了:
16:12:51,433 main com.john.dao.ObligationDao An error occurred during the query
16:12:51,433 main com.john.service.ObligationService An error occurred during the progress

相關推薦

logback 輸出日誌不同檔案

為了方便檢視和歸檔: 不同包的日誌可能要放到不同的檔案中,如service層和dao層的日誌; 不同日誌級別:除錯、資訊、警告和錯誤等也要分檔案輸出。 一、根據包輸出,通過logger的name屬性指定不同的包 1. 建立不同包下的兩個類: 1)ObligationServ

14.3Python程式除錯與測試3輸出日誌檔案

@輸出日誌到檔案 建立一個logging.FileHandler物件 配置其日誌級別和格式等資訊 新增檔案處理器到logger import logging # 獲取logger物件,設定日誌

springboot之logback配置日誌檔案

預設情況下,spring boot會用logback來記錄日誌,本節將講述logback.xml檔案的配置。首先新增日誌依賴<!--新增Springboot預設支援的logback作為標準日誌輸出--> <dependency> <groupI

第十一週專案六輸出1000以內的所有迴文素數

/* *copyright (c) 2014, 煙臺大學計算機學院. *All rights reserved. *檔名稱:test.cpp *作者:陸雲傑 *完成日期:2014年11月8日 *版本號:v1.0 * * *問題描述:輸出1000以內的

springboot之logback日誌寫入資料庫

上一節講了標準日誌輸出到檔案中,本節講解將日誌寫入資料庫,最主要的核心類就是DBAppender。我使用的MySQL資料庫,建立auge_log資料庫,執行以下內容建表。BEGIN; DROP TABLE IF EXISTS logging_event_property; D

Python+OGR庫學習重投影shp檔案並另存,屬性表保持不變

程式碼關鍵點 1、首先要定義好轉換引數 2、主要操作物件是要素,需要提前建立好輸出檔案,然後遍歷所有要素,對每一個幾何物件進行座標轉換 3、輸出檔案的欄位屬性定義需要從輸入檔案讀取 程式碼思路 1、匯入相關包,切換路徑,註冊驅動 2、定義轉換關係 3、開啟輸入檔案,讀取到圖層

logback系列之二輸出日誌檔案

和logback系列之一:輸出日誌到控制檯類似,改動的地方: 1. logback[-test].xml檔案: Java程式碼   <appender name="fileAppender

UEFI原理與程式設計UEFI工程模組檔案-使用main函式的應用程式工程模組

UEFI工程模組檔案-使用mian函式的應用程式工程模組 前言   標準應用程式工程模組和Shell應用程式工程模組寫起來都是相對和我們平常使用的C/C++有些不同。EDK2提供了使用main函式的

centos7搭建ELK Cluster集群日誌分析平臺簡單測試

-1 簡單測試 logs ima .tar.gz 分析 -c cluster images 續之前安裝好的ELK集群   各主機:es-1 ~ es-3 :192.168.1.21/22/23       logstash:  192.168.1.24       ki

JavaScript學習日誌BOM

特殊符號 對話框 核心 混淆 == script delet 網頁 port BOM的核心對象就是window,這一章沒什麽好說的,總結一些比較常用的: 1,a未定義,a; //報錯window.a; //undefined 不能用delete刪除全局變量 2

java調Python指令碼java返回Python錯誤日誌

上一篇java調Python指令碼時沒有返回錯誤的日誌提醒行等,在這裡補上,主要用java.lang.Process.getErrorStream() 方法獲取子程序的錯誤流​​。資料流獲取由該Process物件表示的程序的錯誤輸出流的管道的資料。 1、java程式碼: pub

Java類集框架集合輸出

集合輸出的4種形式:Iterator輸出、ListIterator輸出、foreach(加強型for迴圈)輸出、Enumeration輸出。 迭代輸出:Iterator Iterator(迭代器)是集合輸出操作的一個介面,Collection介面中提供了直接為Iterator介面例項

使用xpath實現document.querySelector樣式選擇器進行html解析將選擇結果封裝進行輸出

-----------------------------------------------------------------恩,其實到目前為止,關於xpath解析html的樣式選擇器其實已經完工了,而且,應該說比預期的目的還多出了一丟丟的效果例如:QuerySelect

TI-TM4C123x學習記錄點亮LED——gpio輸出

一、簡介當IO為輸出模式時(多數IO口預設輸出,部分IO口有鎖需要解鎖,如PF0,PD0,PD7。詳見資料手冊),使用GPIOPinWrite(或ROM_GPIOPinWrite)函式能夠設定IO的輸出狀態(高或低)。二、函式示例 GPIOPinWrite(GPIO_PORT

shell編程學習筆記Shell中轉義字符的輸出

特殊 進制 .sh 簡單 轉義 版本 col 輸出 asc 通過echo可以輸出字符串,下面看一下怎麽輸出特殊轉義字符,首先我先列出來echo的轉義字符: \\  輸入\ \a  輸出警告音 \b  退格,即向左刪除一個字符 \c  取消輸出行末的換行符,和-n選項

物聯網平臺構架系列 Amazon, Microsoft, IBM IoT 平臺導論 之 平臺

物聯網; iot; aws; 亞馬遜; greengrass;microsoft; azure;ibm; watson; bluemix最近研究了一些物聯網平臺技術資料,以做選型參考。腦子裏積累大量信息,便想寫出來做一些普及。作為科普文章,力爭通俗易懂,不確保概念嚴謹性。我會給考據癖者提供相關英文鏈接,以便深

linux下oracle11G DG搭建興許驗證操作

歸檔 驗證 補充 over nts content -s 環境 fontsize linux下oracle11G DG搭建(四):興許驗證操作 環境 名稱 主庫 備庫 主機名 bjsrv shsrv 軟件版本號 RedH

搜索引擎ElasticSearch系列 ElasticSearch2.4.4 sql插件安裝

china code als 插件 技術分享 -s fun nlp 4.0 一:ElasticSearch sql插件簡介   With this plugin you can query elasticsearch using familiar SQL syntax.

elastic-job詳解失效轉移

shard out utm monit 設置 borde 點滴 title 等於 elastic-job中最關鍵的特性之一就是失效轉移。配置了失效轉移之後,如果在任務執行過程中有一個執行實例掛了,那麽之前被分配到這個實例的任務(或者分片)會在下次任務執行之前被重新分配到其他

Java-MavenEclipse集成Maven環境配置

查找 epo 情況 jpg ont 使用 eclipse版 需要 style 一般maven都需要集成到IDE上使用的,而不是單獨的使用,常見的maven可集成IDE:eclipse、IntelliJ IDEA。但這裏就只學習eclipse集成maven的基礎上,進行mav