1. 程式人生 > >Log4j info和error輸出到不同檔案

Log4j info和error輸出到不同檔案

1、log4j提供了為不同的 Appender 設定日誌輸出級別的功能,方法是配置Appender的Threshold(log4j.appender.D.Threshold = DEBUG)。例如:

### set log levels ###
log4j.rootLogger = debug ,stdout,D,E

### 輸出到控制檯 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n

### 輸出到日誌檔案 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## 輸出DEBUG級別以上的日誌
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 儲存異常資訊到單獨檔案 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs/error.log ## 異常日誌檔名
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR ## 只輸出ERROR級別以上的日誌!!!
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

配置後,經過測試發現,在log.log檔案中同時輸出了debug和error兩種資訊。因為log4j.appender.D.Threshold = DEBUG表示輸出debugger級別以上的日誌,error級別大於debug,所以error和debug都會輸出到log.log中,而error.log中只儲存了錯誤日誌。

2、為了解決上述問題,使用下面方式配置:

### set log levels ###
log4j.rootLogger = info,stdout,infolog,errorlog

###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  [%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n
 
### 輸出到日誌檔案 ###
log4j.logger.infolog = info,infolog 
log4j.appender.infolog.Append = true
log4j.appender.infolog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.infolog.File = /data/logs/ttbrain/ttbrain-recommend-api.log
log4j.appender.infolog.layout = org.apache.log4j.PatternLayout
log4j.appender.infolog.layout.ConversionPattern = [%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n
 
### 儲存異常資訊到單獨檔案 ###
log4j.logger.errorlog = error,errorlog
log4j.appender.errorlog.Append = true
log4j.appender.errorlog.Threshold = error
log4j.appender.errorlog = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlog.File = /data/logs/ttbrain/ttbrain-recommend-api_error.log
log4j.appender.errorlog.layout = org.apache.log4j.PatternLayout
log4j.appender.errorlog.layout.ConversionPattern = [%d{MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n

1)說明:

  • 在rootLogger上指定level和appenderName;
  • 下面對每個appenderName的配置中,使用log4j.logger.appendName = levle,appendName 的格式來配置級別(例如:log4j.logger.infolog = info,infolog ) ,同時用Threshold來決定不同級別的日誌。
注:如果在errorlog中不使用log4j.appender.errorlog.Append = true,那麼error日誌中也會列印info的日誌。

2)測試:

public class Log4jDemo   
{  
    static Logger infoLogger = Logger.getLogger("infofile");  
    static Logger errorLogger = Logger.getLogger("errorfile");  
      
    public static void main(String[] args)   
    {  
        try  
        {  
            infoLogger.info("run division..");  
            int result = 7/0;  
        }  
        catch(ArithmeticException e)  
        {  
            errorLogger.error("Can not divide by zero");  
        }  
    }  
}  

即可。

相關推薦

Log4j infoerror輸出不同檔案

1、log4j提供了為不同的 Appender 設定日誌輸出級別的功能,方法是配置Appender的Threshold(log4j.appender.D.Threshold = DEBUG)。例如: ### set log levels ### log4j.rootLog

Log4j 分級別過濾輸出日誌檔案

詳細配置,分級別過濾,達到指定大小後重新生成新檔案,每天生成新的檔案 log4j.rootLogger=debug,debug,info,warn,error,fatal,stdout #log4j.appender.stdout=org.apache.log4j.Con

Log4J日誌配置詳解自定義log4j日誌級別及輸出日誌到不同檔案實現方法

package com.jo.work.log4j; import java.util.Enumeration; import org.apache.log4j.Appender; import org.apache.log4j.FileAppender; import org.apache.log4j.

log4j日誌按分模組分級輸出不同檔案中去

現在遇到這樣一個場景: 輸出日誌,按照不同的模組,和級別 輸出到不同的檔案中。 現在有 org.zq.core 和 org.zq.web 包下需要將 info 和 error 分別輸出到檔案中,也就是說,需要輸出到4個檔案中。 以下為配置檔案; `實現思路

log4j 控制檯檔案輸出亂碼問題解決

一個小問題,卻讓我感覺到,現在真正動腦的人很少。。我來說說吧。 今天遇到一個小問題,log4j輸出到檔案亂碼,控制檯正常。顯然是編碼問題導致。Google一搜,幾乎一水的說: 專案中log4j在英文版linux下輸出中文日誌為亂碼。由於

Log4j不同級別輸出不同檔案的幾種方式

log4j已經是古董了,但是現在專案還在用,需要用到不同級別輸出到不同檔案,所以把幾種實現方式記錄下來,備忘! 下面的幾種配置都是使用properties的情況,但是xml的原理也一樣. 使用LevelRangeFilter 使用LevelMatchFil

Log4J-Log4J配置介紹/Log4J不同模組不同日誌級別輸出不同檔案的配置

##=======================Log4J一些日誌級別配置測試說明20180622============================## #==============一、根配置====================# #1. 首先定

log4j日誌輸出分級別或模組到不同檔案

一、 實現分模組,輸出到不同的日誌檔案,  以下是log4j.properties的實現   log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.

argo的輸入輸出--outputinput輸出目錄或檔案到下一步驟

轉載請註明出處: argo的輸入輸出–output和input輸出目錄或檔案到下一步驟 有部分場景需要使用output把目錄或者檔案傳遞到下一個步驟。 argo提供了兩種方式 一種是引數方式parameter 一種是元件方式artifacts 各自適用於不同的場景,引數方式是

log4j不列印sql,不輸出日誌檔案到指定目錄

#log4j.rootLogger=CONSOLE,info,error,DEBUG log4j.rootLogger=infoA,errorA,CONSOLE,DEBUGA //注意這裡不要用INFO,DEBUG等 改個名字 log4j.appender.CONSOLE=org.apach

error LNK2005 --類的宣告定義放在一個檔案

刷C++primer的時候,將類的宣告和定義均放在標頭檔案中,報錯error LNK2005 1> Sales_data.h 1>Sales_data.obj : error LNK2005: "public: class Sales_data & __this

python log輸出檔案控制檯

import logging LOG_FILE = 'mylog.log' file_handler = logging.FileHandler(LOG_FILE) #輸出到檔案 console_handler = logging.StreamHandler() #輸出到控制檯 fil

[轉載] js 讀取輸出txt檔案

https://www.jb51.net/article/46712.htm ActiveXObject is not defined,ActiveXObject是IE瀏覽器獨有支援的外掛,其他瀏覽器可能不支援。     then--前端不好將資料儲存到本地txt檔案,可以通過jq

Linux下對lvm邏輯卷分割槽大小的調整(針對xfsext4不同檔案系統)

當我們在安裝系統的時候,由於沒有合理分配分割槽空間,在後續維護過程中,發現有些分割槽空間不夠使用,而有的分割槽空間卻有很多剩餘空間。如果這些分割槽在裝系統的時候使用了lvm(前提是這些分割槽要是lvm邏輯卷分割槽),那麼就可以輕鬆進行擴容或縮容!不同檔案系統型別所對應的建立、檢查、調整命令不同,下面就針對xf

日誌輸出Log4j配置使用

     在開發過程中,日誌資訊是必不可少的,一般我們會選擇在控制檯檢視程式輸出的日誌資訊,而常用到的日誌工具是Log4j,下面就其在開發中的配置來了解下。     一、瞭解日誌輸出工具Log4j &n

日誌檔案 log4j解釋 spring Boot開發步驟

日誌處理技術 日誌級別: error>warn>info>debug 注意:級別越高,列印日誌越少 日誌分類 父日誌 整個專案中的日誌,全域性日誌 子日誌 針對某個包列印的日誌 子日誌的優先順序高於父日誌 springmvc 中 log4j

《Linux程式設計》第三章(標準IO庫、格式化輸入輸出檔案目錄的維護、掃描目錄)

標準IO庫 在啟動程式時,有三個檔案流是自動開啟的,分別是stdin,stdout,stderr。 1. fopen函式:用於檔案和終端的輸入和輸出。函式原型如下: #include <stdio.h> FILE *fopen(const char* f

使用profileresource配置不同環境配置檔案

在pom.xml中增加如下配置 <resources> <resource> <directory>src/main/resources</directory> <excludes> <excl

logback日誌輸出不同級別到不同檔案(開發例項配置)

<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 控制檯 appender --> <appender name="STDOUT" class="

python在終端輸出不同顏色的列印,自定義日誌自定義log輸出級別

實現過程:       終端的字元顏色是用轉義序列控制的,是文字模式下的系統顯示功能,和具體的語言無關。       轉義序列是以ESC開頭,即用\033來完成(ESC的ASCII碼用十進位制