1. 程式人生 > >使用logback.xml配置來實現日誌檔案輸出

使用logback.xml配置來實現日誌檔案輸出

轉自:http://sungang-1120.iteye.com/blog/2104296 

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來訪問日誌的功能。

logback.xml配置如下:

Xml程式碼  收藏程式碼
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!-- 從高到地低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->  
  3. <!-- 日誌輸出規則  根據當前ROOT 級別,日誌輸出時,級別高於root預設的級別時  會輸出 -->  
  4. <!-- 以下  每個配置的 filter 是過濾掉輸出檔案裡面,會出現高級別檔案,依然出現低級別的日誌資訊,通過filter 過濾只記錄本級別的日誌-->  
  5. <!-- 屬性描述 scan:性設定為true時,配置檔案如果發生改變,將會被重新載入,預設值為true scanPeriod:設定監測配置檔案是否有修改的時間間隔,如果沒有給出時間單位,預設單位是毫秒。當scan為true時,此屬性生效。預設的時間間隔為1分鐘。   
  6.     debug:當此屬性設定為true時,將打印出logback內部日誌資訊,實時檢視logback執行狀態。預設值為false。 -->  
  7. <configuration scan="true" scanPeriod="60 seconds" debug="false">  
  8.     <!-- 定義日誌檔案 輸入位置 -->  
  9.     <property name="log_dir" value="/logs/ev_cmdb" />  
  10.     <!-- 日誌最大的歷史 30天 -->  
  11.     <property name="maxHistory" value="30"/>  
  12.     <!-- ConsoleAppender 控制檯輸出日誌 -->  
  13.     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
  14.         <!-- 對日誌進行格式化 -->  
  15.         <encoder>  
  16.             <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern>  
  17.         </encoder>  
  18.     </appender>  
  19.     <!-- ERROR級別日誌 -->  
  20.     <!-- 滾動記錄檔案,先將日誌記錄到指定檔案,當符合某個條件時,將日誌記錄到其他檔案 RollingFileAppender-->  
  21.     <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  22.         <!-- 過濾器,只記錄WARN級別的日誌 -->  
  23.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  24.             <level>ERROR</level>  
  25.             <onMatch>ACCEPT</onMatch>  
  26.             <onMismatch>DENY</onMismatch>  
  27.         </filter>  
  28.         <!-- 最常用的滾動策略,它根據時間來制定滾動策略.既負責滾動也負責出發滾動 -->  
  29.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  30.             <!--日誌輸出位置  可相對、和絕對路徑 -->  
  31.             <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/error-log.log</fileNamePattern>  
  32.             <!-- 可選節點,控制保留的歸檔檔案的最大數量,超出數量就刪除舊檔案假設設定每個月滾動,且<maxHistory>是6,  
  33.             則只儲存最近6個月的檔案,刪除之前的舊檔案。注意,刪除舊檔案是,那些為了歸檔而建立的目錄也會被刪除-->  
  34.             <maxHistory>${maxHistory}</maxHistory>  
  35.         </rollingPolicy>  
  36.         <!-- 按照固定視窗模式生成日誌檔案,當檔案大於20MB時,生成新的日誌檔案。視窗大小是1到3,當儲存了3個歸檔檔案後,將覆蓋最早的日誌。   
  37.         <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">     
  38.           <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern>     
  39.           <minIndex>1</minIndex>     
  40.           <maxIndex>3</maxIndex>     
  41.         </rollingPolicy>   -->  
  42.         <!-- 檢視當前活動檔案的大小,如果超過指定大小會告知RollingFileAppender 觸發當前活動檔案滾動   
  43.         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">     
  44.             <maxFileSize>5MB</maxFileSize>     
  45.         </triggeringPolicy>   -->  
  46.         <encoder>  
  47.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>  
  48.         </encoder>  
  49.     </appender>  
  50.     <!-- WARN級別日誌 appender -->  
  51.     <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  52.         <!-- 過濾器,只記錄WARN級別的日誌 -->  
  53.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  54.             <level>WARN</level>  
  55.             <onMatch>ACCEPT</onMatch>  
  56.             <onMismatch>DENY</onMismatch>  
  57.         </filter>  
  58.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  59.             <!-- 按天回滾 daily -->  
  60.             <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/warn-log.log  
  61.             </fileNamePattern>  
  62.             <!-- 日誌最大的歷史 60天 -->  
  63.             <maxHistory>${maxHistory}</maxHistory>  
  64.         </rollingPolicy>  
  65.         <encoder>  
  66.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>  
  67.         </encoder>  
  68.     </appender>  
  69.     <!-- INFO級別日誌 appender -->  
  70.     <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  71.         <!-- 過濾器,只記錄INFO級別的日誌 -->  
  72.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  73.             <level>INFO</level>  
  74.             <onMatch>ACCEPT</onMatch>  
  75.             <onMismatch>DENY</onMismatch>  
  76.         </filter>  
  77.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  78.             <!-- 按天回滾 daily -->  
  79.             <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/info-log.log  
  80.             </fileNamePattern>  
  81.             <!-- 日誌最大的歷史 60天 -->  
  82.             <maxHistory>${maxHistory}</maxHistory>  
  83.         </rollingPolicy>  
  84.         <encoder>  
  85.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>  
  86.         </encoder>  
  87.     </appender>  
  88.     <!-- DEBUG級別日誌 appender -->  
  89.     <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  90.         <!-- 過濾器,只記錄DEBUG級別的日誌 -->  
  91.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  92.             <level>DEBUG</level>  
  93.             <onMatch>ACCEPT</onMatch>  
  94.             <onMismatch>DENY</onMismatch>  
  95.         </filter>  
  96.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  97.             <!-- 按天回滾 daily -->  
  98.             <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/debug-log.log  
  99.             </fileNamePattern>  
  100.             <!-- 日誌最大的歷史 60天 -->  
  101.             <maxHistory>${maxHistory}</maxHistory>  
  102.         </rollingPolicy>  
  103.         <encoder>  
  104.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>  
  105.         </encoder>  
  106.     </appender>  
  107.     <!-- TRACE級別日誌 appender -->  
  108.     <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  109.         <!-- 過濾器,只記錄ERROR級別的日誌 -->  
  110.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  111.             <level>TRACE</level>  
  112.             <onMatch>ACCEPT</onMatch>  
  113.             <onMismatch>DENY</onMismatch>  
  114.         </filter>  
  115.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  116.             <!-- 按天回滾 daily -->  
  117.             <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/trace-log.log  
  118.             </fileNamePattern>  
  119.             <!-- 日誌最大的歷史 60天 -->  
  120.             <maxHistory>${maxHistory}</maxHistory>  
  121.         </rollingPolicy>  
  122.         <encoder>  
  123.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>  
  124.         </encoder>  
  125.     </appender>  
  126.     <logger name="java.sql.PreparedStatement" value="DEBUG" />    
  127.     <logger name="java.sql.Connection" value="DEBUG" />    
  128.     <logger name="java.sql.Statement" value="DEBUG" />    
  129.     <logger name="com.ibatis" value="DEBUG" />    
  130.     <logger name="com.ibatis.common.jdbc.SimpleDataSource" value="DEBUG" />    
  131.     <logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG"/>    
  132.     <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" value="DEBUG" />    
  133.     <!-- root級別   DEBUG -->  
  134.     <root level="debug">  
  135.         <!-- 控制檯輸出 -->  
  136.         <appender-ref ref="STDOUT" />  
  137.         <!-- 檔案輸出 -->  
  138.         <appender-ref ref="ERROR" />  
  139.         <appender-ref ref="INFO" />  
  140.         <appender-ref ref="WARN" />  
  141.         <appender-ref ref="DEBUG" />  
  142.         <appender-ref ref="TRACE" />  
  143.     </root>  
  144. </configuration>  

LogUtils.java

Java程式碼  收藏程式碼
  1. package log.base;  
  2. package com.ghca.easyview.server.common.utils;  
  3. import org.slf4j.Logger;  
  4. import org.slf4j.LoggerFactory;  
  5. public class LogUtils {  
  6.     /** 
  7.      * 錯誤輸入日誌 
  8.      */  
  9.     public static final Logger log = LoggerFactory.getLogger(LogUtils.class);  
  10.     /** 
  11.      * 記錄一直 info資訊 
  12.      *  
  13.      * @param message 
  14.      */  
  15.     public static void logInfo(String message) {  
  16.         StringBuilder s = new StringBuilder();  
  17.         s.append((message));  
  18.         log.info(s.toString());  
  19.     }  
  20.     public static void logInfo(String message, Throwable e) {  
  21.         StringBuilder s = new StringBuilder();  
  22.         s.append(("exception : -->>"));  
  23.         s.append((message));  
  24.         log.info(s.toString(), e);  
  25.     }  
  26.     public static void logWarn(String message) {  
  27.         StringBuilder s = new StringBuilder();  
  28.         s.append((message));  
  29.         log.warn(s.toString());  
  30.     }  
  31.     public static void logWarn(String message, Throwable e) {  
  32.         StringBuilder s = new StringBuilder();  
  33.         s.append(("exception : -->>"));  
  34.         s.append((message));  
  35.         log.warn(s.toString(), e);  
  36.     }  
  37.     public static void logDebug(String message) {  
  38.         StringBuilder s = new StringBuilder();  
  39.         s.append((message));  
  40.         log.debug(s.toString());  
  41.     }  
  42.     public static void logDebug(String message, Throwable e) {  
  43.         StringBuilder s = new StringBuilder();  
  44.         s.append(("exception : -->>"));  
  45.         s.append((message));  
  46.         log.debug(s.toString(), e);  
  47.     }  
  48.     public static void logError(String message) {  
  49.         StringBuilder s = new StringBuilder();  
  50.         s.append(message);  
  51.         log.error(s.toString());  
  52.     }  
  53.     /** 
  54.      * 記錄日誌錯誤資訊 
  55.      *  
  56.      * @param message 
  57.      * @param e 
  58.      */  
  59.     public static void logError(String message, Throwable e) {  
  60.         StringBuilder s = new StringBuilder();  
  61.         s.append(("exception : -->>"));  
  62.         s.append((message));  
  63.         log.error(s.toString(), e);  
  64.     }  
  65. }  

TEST

Java程式碼  收藏程式碼
  1. package com.ghca.easyview.server.log.test;  
  2. import java.io.File;  
  3. import java.io.IOException;  
  4. import org.junit.Before;  
  5. import org.junit.Test;  
  6. import org.slf4j.Logger;  
  7. import org.slf4j.LoggerFactory;  
  8. import ch.qos.logback.core.joran.spi.JoranException;  
  9. import com.ghca.easyview.server.common.utils.LogBackConfigLoader;  
  10. import com.ghca.easyview.server.common.utils.LogUtils;  
  11. import com.ghca.easyview.server.config.ServerConfig;  
  12. public class TestLog {  
  13.     @Before  
  14.     public void before() {  
  15.         File file = new File(System.getProperty("user.dir"));  
  16.         String path = file.getPath() + File.separator + "conf";  
  17.         // 將主要配置檔案路徑賦值給 ServerConfig.configPath屬性  
  18.         ServerConfig.config_path = path;  
  19.         try {  
  20.             // 載入日誌檔案  
  21.             LogBackConfigLoader.load(ServerConfig  
  22.                     .loadLogBackConfPath("logback.xml"));  
  23.         } catch (IOException | JoranException e) {  
  24.             e.printStackTrace();  
  25.         }  
  26.     }  
  27.     @Test  
  28.     public void test1() {  
  29.         LogUtils.logInfo("INFO ~");  
  30.         LogUtils.logDebug("DEBUG ~");  
  31.         LogUtils.logError("ERROR~");  
  32.         LogUtils.logWarn("WARN ~");  
  33.     }  
  34. }  

 根據日誌級別輸出不等的日誌資訊,

相關推薦

使用logback.xml配置實現日誌檔案輸出

轉自:http://sungang-1120.iteye.com/blog/2104296  Logback是由log4j創始人設計的又一個開源日誌元件。logback當前分成三個模組:logback-core,logback- classic和logback-access。logback-core是其它兩

通過xml配置實現資料庫的批量修改一

需求來源 近期由於專案的圖片伺服器遷移導致大量寫死在資料庫中圖片路徑需要修改。 實現思路 通過百度瞭解到可以通過mysql的REPLACE函式來進行區域性替換資料內容,類似這樣的語句: "UPDATE "+tableName+" SET

logback.xml配置如何按天輸出日誌檔案

<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <la

springboot的logback.xml配置日誌記錄

最近在研究springboot的日誌,所以記錄一下,做一下總結。 幾篇關於日誌的文章: 介紹日誌:https://blog.csdn.net/gwd1154978352/article/details/78344091      https://www.cnblogs.com/bigdataZJ/p/spri

log4j實現日誌輸出

spa 定義 config prop con 開源 log4j 輸出格式 了解 1.log4j是Apache的一個開源項目,通過使用Log4j,我們可以控制日誌信息輸送的目的地是控制臺、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等

web.xml配置錯誤頁面,及輸出錯誤信息

tools b- 出錯 print exce str 異常信息 csdn () 1.需要在web.xml中配置相關信息 [html] view plain copy print? <!-- 默認的錯誤處理頁面 --> <error-pa

logback.xml配置

warn eve ger ons gpo sbc ring -i logback 生成info,warn,error級別日誌文件,保存60天,如果文件大於10MB新建日誌文件,後綴0,1,2,3來標識。自定義控制臺輸出內容顏色。 <?xml version="1.0"

Spring-Kafka XML配置方法實現生產和消費

  Spring-Kafka XML配置方法實現生產和消費  1. 生產者配置xml Step1:producerProperties:設定生產者公產需要的配置 ; Step2:producerFactory:定義了生產者工廠構造方法

Logback中使用TurboFilter實現日誌級別等內容的動態修改

可能看到這個標題,讀者會問:要修改日誌的級別,不是直接修改log.xxx就好了嗎?為何要搞那麼複雜呢?所以,先說一下場景,為什麼要通過TurboFilter去動態的修改日誌級別。我們在使用Java開發各種專案的時候必然的會引入很多框架,這些框架通過堆疊的方式完成所要提供的業務服務(一個服務請求在進入後會在這些

logback.xml 配置

 需要引入 logback-core-1.1.2.jar <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定義日誌檔案的儲存地址 勿在 LogBack 的配置

Spring Boot入門 (二) :無xml配置實現

無xml配置的實現 自Spring3.X 以後 spring 提供了很多的註解來代替XML檔案的配置,最核心的是下面兩個註解。 ::@Configuration:: 標註該類是配置類,類似於我們定義的applicationContext.xml ::@B

用Java+xml配置方式實現Spring資料事務(程式設計式事務)

一、用Java配置的方式 1、實體類: Role  public class Role { private int id; private String roleName; private String note; @Override

ASP.NET 實現日誌檔案分頁查詢

ASP.NET 日誌檔案分頁查詢,通過讀取日誌行進行分頁處理,支援從頭到尾和從尾到頭分頁。 目錄 後端實現 TxtFileReader Pager Controller 前端實現 FileLog.cshtml 效果 後端實現 TxtFileReader

logback.xml配置模版

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE xml>  <configuration    scan="true"

(轉)Spring boot——logback.xml 配置詳解(二)

回到頂部1 根節點<configuration>包含的屬性scan:當此屬性設定為true時,配置檔案如果發生改變,將會被重新載入,預設值為true。scanPeriod:設定監測配置檔案是否有修改的時間間隔,如果沒有給出時間單位,預設單位是毫秒。當scan為true時,此屬性生效。預設的時間間隔

logback.xml 配置Demo

pom.xml引入依賴 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

【android】利用BuildConfig.DEBUG控制日誌輸出

前言 在Android 應用程式開發中,不可避免地會常常輸出各種除錯資訊,通常我們會使用android.util.Log類輸出該類日誌資訊(這是推薦使用的方式)。然而,在專案釋出的時候,我們常常需要關閉這些冗餘的Log資訊,手工關閉Log相當不方

Spring boot——logback.xml 配置詳解(二)

原文地址:https://www.cnblogs.com/lixuwu/p/5810912.html                   https://aub.iteye.com/blog/1101260 閱

使用原生Java Web實現檔案的上傳

BigFileUpload 目錄 背景介紹 專案介紹 使用說明 獲取程式碼 需要知識點 啟動專案 專案示範 核心講解 功能分析 分塊上傳 秒傳功能 斷點續傳 總結 背景介紹 這個專案是在朋友的一次面試中,面試人提出了一個問題.

介紹一個個人覺得比較好用VC日誌檔案輸出工具

原始碼下載地址:http://download.csdn.net/detail/qq_23992597/9581034 這個只需要包含他的標頭檔案,就可以使用了,十分的方便.更妙的是他有一個控制檯視窗可以實時輸出除錯資訊.