log4j.xml實現每天建立一個log檔案
1、log4j.xml放在工程 WEB-INF下
2、在web.xml中配置log4j<?xml version="1.0" encoding="gbk" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- 輸出到控制檯 --> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n"/> </layout> <!-- <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="FATAL" /> <param name="LevelMax" value="FATAL" /> --> </filter> </appender> <!-- 配置程式除錯時的日誌輸出,輸出到檔案,並且檔案按天存放 --> <appender name="DEBUG" class="com.zlz.utils.DatedFileAppender"> <param name="Encoding" value="UTF-8" /> <!-- 除錯日誌檔案存放在log/debug目錄下 --> <param name="File" value="${root}/WEB-INF/log/%yyyy/%mm/%dd/debug.log" /> <!-- 重啟後追加到舊檔案 --> <param name="Append" value="true" /> <!-- 按天分割檔案 --> <!-- param name="DatePattern" value=".yyyy-MM-dd" /--> <!-- 配置日誌格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%c %d -- %p -- %m%n" /> </layout> <!-- 配置過濾器,此檔案只輸出DEBUG資訊 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="DEBUG" /> </filter> </appender> <!-- 配置程式執行時的日誌輸出,輸出到檔案,並且檔案按天存放 --> <appender name="INFO" class="com.zlz.utils.DatedFileAppender"> <param name="Encoding" value="UTF-8" /> <!-- 事件日誌檔案存放在log/info目錄下 --> <param name="File" value="${root}/WEB-INF/log/%yyyy/%mm/%dd/info.log" /> <!-- 重啟後追加到舊檔案 --> <param name="Append" value="true" /> <!-- 按天分割檔案 --> <!-- param name="DatePattern" value=".yyyy-MM-dd" /--> <!-- 配置日誌格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%c %d -- %p -- %m%n" /> </layout> <!-- 配置過濾器,此檔案只輸出INFO資訊 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!-- 配置程式執行時的日誌輸出,輸出到檔案,並且檔案按天存放 --> <appender name="WARN" class="com.zlz.utils.DatedFileAppender"> <param name="Encoding" value="UTF-8" /> <!-- 事件日誌檔案存放在log/info目錄下 --> <param name="File" value="${root}/WEB-INF/log/%yyyy/%mm/%dd/warn.log" /> <!-- 重啟後追加到舊檔案 --> <param name="Append" value="true" /> <!-- 按天分割檔案 --> <!-- param name="DatePattern" value=".yyyy-MM-dd" /--> <!-- 配置日誌格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%c %d -- %p -- %m%n" /> </layout> <!-- 配置過濾器,此檔案只輸出INFO資訊 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="WARN" /> </filter> </appender> <!-- 配置出現重量級的異常時的日誌輸出,輸出到檔案,並且檔案按天存放 --> <appender name="ERROR" class="com.zlz.utils.DatedFileAppender"> <param name="Encoding" value="UTF-8" /> <!-- 錯誤日誌檔案存放在log/error目錄下 --> <param name="File" value="${root}/WEB-INF/log/%yyyy/%mm/%dd/error.log" /> <!-- 重啟後追加到舊檔案 --> <param name="Append" value="true" /> <!-- 按天分割檔案 --> <!-- param name="DatePattern" value=".yyyy-MM-dd" /--> <!-- 配置日誌格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yyyy-MM-dd hh:mm:ss}:%p %c:%L - %m%n" /> </layout> <!-- 配置過濾器,此檔案只輸出錯誤資訊 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!-- 配置出現災難性的異常時的日誌輸出,輸出到檔案,並且檔案按天存放 --> <appender name="FATAL" class="com.zlz.utils.DatedFileAppender"> <param name="Encoding" value="UTF-8" /> <!-- 錯誤日誌檔案存放在log/fatal目錄下 --> <param name="File" value="${root}/WEB-INF/log/%yyyy/%mm/%dd/fatal.log" /> <!-- 重啟後追加到舊檔案 --> <param name="Append" value="true" /> <!-- 按天分割檔案 --> <!-- param name="DatePattern" value=".yyyy-MM-dd" /--> <!-- 配置日誌格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%c %d -- %p -- %m%n" /> </layout> <!-- 配置過濾器,此檔案只輸出災難資訊 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="FATAL" /> <param name="LevelMax" value="FATAL" /> </filter> </appender> <!-- 配置程式執行時的日誌輸出,輸出到檔案,並且檔案按天存放 --> <appender name="TRACE" class="com.zlz.utils.DatedFileAppender"> <param name="Encoding" value="UTF-8" /> <!-- 事件日誌檔案存放在log/info目錄下 --> <param name="File" value="${root}/WEB-INF/log/%yyyy/%mm/%dd/trace.log" /> <!-- 重啟後追加到舊檔案 --> <param name="Append" value="true" /> <!-- 按天分割檔案 --> <!-- param name="DatePattern" value=".yyyy-MM-dd" /--> <!-- 配置日誌格式 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%c %d [%t] %p -- %m%n" /> </layout> <!-- 配置過濾器,此檔案只輸出INFO資訊 --> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="TRACE" /> <param name="LevelMax" value="TRACE" /> </filter> </appender> <root><!-- 設定接收所有輸出的通道 --> <level value ="INFO"/> <!-- 對應上面的appender --> <appender-ref ref="STDOUT"/> <appender-ref ref="DEBUG"/> <appender-ref ref="ERROR"/> <appender-ref ref="INFO"/> <appender-ref ref="WARN"/> <appender-ref ref="FATAL"/> </root> </log4j:configuration>
<!-- log4j配置 --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/log4j.xml</param-value> </context-param> <context-param> <param-name>webAppRootKey</param-name> <param-value>root</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- log4j配置 -->
3、自定義的fileAppender
(1). 輸出方式appender一般有5種:package com.zlz.utils; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.log4j.FileAppender; import org.apache.log4j.Logger; import org.apache.log4j.helpers.LogLog; import org.apache.log4j.spi.LoggingEvent; public class DatedFileAppender extends FileAppender { private final static Logger logger = Logger.getLogger(DatedFileAppender.class); private long nextCheck = 0L; private String originFilename = null; private String getDatedFilename() { String str = this.originFilename; SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); String time14 = format.format(new Date()); str = str.replaceAll("%yyyy", time14.substring(0, 4)); str = str.replaceAll("%yy", time14.substring(0, 4)); str = str.replaceAll("%mm", time14.substring(4, 6)); str = str.replaceAll("%dd", time14.substring(6, 8)); str = str.replaceAll("%hh", time14.substring(8, 10)); String curPath = str; try { newFolder(str); } catch (Exception ex) { logger.error("log4j檔案路徑建立失敗:" + ex); } return curPath; } void switchFilename() throws IOException { String datedFilename = getDatedFilename(); if (datedFilename.equals(this.fileName)) { return; } try { setFile(datedFilename, getAppend(), getBufferedIO(), getBufferSize()); } catch (IOException ex) { this.errorHandler.error("setFile(" + datedFilename + ", false) call failed."); } this.fileName = datedFilename; } public void setFile(String file) { this.originFilename = file; super.setFile(getDatedFilename()); } protected void subAppend(LoggingEvent event) { long n = System.currentTimeMillis(); if (n >= this.nextCheck) { this.nextCheck = (n + 30000L); try { switchFilename(); } catch (IOException ioe) { LogLog.error("switchFilename() failed.", ioe); } } super.subAppend(event); } private void newFolder(String folderPath) { String filePath = folderPath.toString(); java.io.File myFilePath = new java.io.File(filePath); try { if (!myFilePath.isDirectory()) { myFilePath.getParentFile().mkdirs(); } } catch (Exception e) { e.printStackTrace(); } } }
org.apache.log4j.RollingFileAppender(滾動檔案,自動記錄最新日誌)
org.apache.log4j.ConsoleAppender (控制檯)
org.apache.log4j.FileAppender (檔案)
org.apache.log4j.DailyRollingFileAppender (每天產生一個日誌檔案)
org.apache.log4j.WriterAppender (將日誌資訊以流格式傳送到任意指定的地方)
(2). 日記記錄的優先順序priority,優先順序由高到低分為
OFF ,FATAL ,ERROR ,WARN ,INFO ,DEBUG ,ALL。
Log4j建議只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG這五個級別。
(3). 格式說明layout中的引數都以%開始,後面不同的引數代表不同的格式化資訊(引數按字母表順序列出):
%c 輸出所屬類的全名,可在修改為 %d{Num} ,Num類名輸出的維(如:"org.apache.elathen.ClassName",%C{2}將輸出elathen.ClassName)
%d 輸出日誌時間其格式為 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
%l 輸出日誌事件發生位置,包括類目名、發生執行緒,在程式碼中的行數
%n 換行符
%m 輸出程式碼指定資訊,如info(“message”),輸出message
%p 輸出優先順序,即 FATAL ,ERROR 等
%r 輸出從啟動到顯示該log資訊所耗費的毫秒數
%t 輸出產生該日誌事件的執行緒名
相關推薦
log4j.xml實現每天建立一個log檔案
1、log4j.xml放在工程 WEB-INF下 <?xml version="1.0" encoding="gbk" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:
log4j配置:每天輸出一個日誌檔案(分級別)
#建議只適應四個級別,從低到高 DEBUG INFO WARN ERROR log4j.rootLogger = INFO,console,infofile,errorfile #warnfile log4j.addivity.org.apache = tru
python每天一個log檔案 TimedRotatingFileHandler
import logging.handlers log_file = 'test.log' time_handler = logging.handlers.TimedRotatingFileHandler(log_file, when='D', interval=1, backupCou
log4j配置每天生成一個日誌檔案
本文僅記錄tomcat下配置成功的記錄,不作log4j配置的詳細使用解釋。 該配置在tomcat的logs資料夾下每天產生新的日誌檔案(DEBUG級別:log.log)(ERROR級別:error.log),然後將前一天的日誌檔案log.log和error.log的名稱
在VSCode中,建立一個.vue檔案的模板
具體步驟 1、使用Ctrl + Shift + P召喚出控制檯,然後輸入snippets並回車。 2、接下來輸入vue並選擇,VSCode會自動生成一個vue.json的檔案。這裡就是我們要輸入模板的地方了。 { /* // Place your snippets for Vue
log4j.xml中如何只輸出log.debug
背景:最近和其他專案聯調,需要證明我方傳送的資訊是正確的,需要打印出debug日誌。但是預設的debug列印的 帶了很多的jar包的資訊,還有很多的sql,這些目前是用不到了,所以可以的話,在聯調的時候遮蔽掉。 原理:因為jar等的資訊多餘,所以,對此類資訊進行篩選,使
log4j.xml 中配置多個輸出檔案
現在的專案中,對於日誌的配置,我們有時候需要配置對應不同的輸出日誌檔案,例如按照模組劃分,按照功能劃分,分別輸出到不同的日誌檔案中,下面介紹一下,怎麼配置不同的輸出日誌檔案。 下面是一整塊的log4j.xml配置。如果對怎麼配置spring 和 log4j不瞭解的話,可以參
logback日誌的使用,每天生成一個日誌檔案,以及error和其他級別日誌的分離
springboot會自動幫我們讀取logback的配置檔案,我們實現只需要新增即可在application中配置日誌檔案的位置logging: config: classpath:conf/logback-dev.xml配置檔案的內容如下:<?xml versio
Python web入門:Django學習與實踐二(簡單頁面實現和建立一個模板)
一、第一個頁面實現(“hello world”) 實現步驟: 1.在views.py檔案中建立一個處理函式(引數名可以隨意,但是最好使用request,看起來清楚明瞭) def index(request):
C++ COM實現之一 建立一個DLL
COM是一種介面技術,它提供了一種方法用於客戶程式進行呼叫。COM原理和技術的文章已經很多了,就不過多講解了,這裡只注重實現。下面分幾步對程序內COM元件進行編碼實現以達到對實現一個COM的清晰的認識,目的是通過COM介面方法呼叫DLL中的函式。 首先,建立一個標準的win3
linux系統磁碟分割槽以及建立一個swap檔案增加虛擬記憶體
一般常用的分割槽命令是fdisk /磁碟 不過它只能用於硬碟<2T的。分割槽:主分割槽+邏輯分割槽構成 >=2T的要用到parted。一個linux系統最多隻能建立4個主分割槽 先分割
centos中如何建立一個txt檔案
centos中如何建立一個txt檔案 聽語音 原創 | 瀏覽:5533 | 更新:2018-11-01
利用配置檔案,在工廠中建立一個實現類物件
package cn.itcast.usermng.dao; import java.io.InputStream; import java.util.Properties; /** * 通過配置檔案得到dao實現類的名稱! * 通過類名稱,完成建立類物件!(反射完成
判斷本地系統目錄下是否存在XML檔案,如果不存在就建立一個XMl檔案,若存在就在裡面執行新增資料
這是我為專案中寫的一個測試的例子, 假如,您需要這樣一個xml檔案, <?xml version="1.0" encoding="utf-8"?> <A> <a> <id>001</id> <name>le
如何在Android Studio中建立一個selector.xml檔案
方法一:在drawable目錄上點選右鍵,彈出選單中有Drawable resource file選項,對話方塊裡填寫檔名稱和檔案型別 。 第一步: 第二步: OK!搞定
html5實現表單內的上傳檔案框,建立一個可存取到該file的url。
<span style="font-size:18px;"><!DOCTYPE html> <html> <head> <title>HTML5上傳圖片預覽</title> <meta http-
logback/log4j實現log檔案一開始自帶日期[log4j預設需要觸發才會帶日期後續]
背景:我們本來是通過記錄行為到log,然後第二天下載log來處理,通過log的時間後續來判斷是否需要下載。後來發現我們下載前到0點沒有log的更新,那麼前一天的log是不會加時間後續,導致不會下載處理,結果記錄漏了資料。所以想找自帶時間戳的方式。 1.Logback lo
一個log4j.properties配置(每天一個日誌檔案)
log4j.rootCategory=WARN,stdout, hd log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j
C#第十週任務之最後一項之建立一個如下的窗體,並在窗體上放置一個選單、一個工具欄控制元件。選單內容如第二個圖所示。工具欄上有兩個按鈕,分別對應“開啟文字檔案”、“儲存文字檔案”。選單和工具欄具體功能實現可
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;
建立一個順序佇列,實現佇列的入隊和出隊操作。
標頭檔案: #ifndef seqqueue_H #define seqqueue_H const int queuesize=10; class seqqueue { int rear,front; int data[queuesize]; public: seqqueue(){front