日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java自定义日志级别_自定义log4j日志级别

發布時間:2025/4/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java自定义日志级别_自定义log4j日志级别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為項目中需要輸出一些特別的日志來做數據統計。如果開啟log4j提供的INFO日志級別,每天生成的日志文件就會變得越來越大。這樣就得寫個定

時任務來刪除這個文件。為了只輸出所需的日志級別,唯有自己定義一個log4j的級別,這樣一來就好控制了,而且不需要對之前的代碼進行修改。好了,廢話

不多說,上代碼:

1、CustomerLog

package?common.log;

import?org.apache.log4j.Level;

import?org.apache.log4j.Logger;

import?org.apache.log4j.net.SyslogAppender;

public?class?CustomerLog?{

/**

*?繼承Level

*?@author?Sevencm

*

*/

private?static?class?CustomerLogLevel?extends?Level{

public?CustomerLogLevel(int?level,?String?levelStr,?int?syslogEquivalent)?{

super(level,?levelStr,?syslogEquivalent);

}

}

/**

*?自定義級別名稱,以及級別范圍

*/

private?static?final?Level?CustomerLevel?=?new?CustomerLogLevel(20050,"CUSTOMER",SyslogAppender.LOG_LOCAL0);

/**

*?使用日志打印logger中的log方法

*

*?@param?logger

*?@param?objLogInfo

*/

public?static?void?customerLog(Logger?logger,Object?objLogInfo){

logger.log(CustomerLevel,?objLogInfo);

}

}

2、Log Filter

package?common.log;

import?org.apache.log4j.spi.Filter;

import?org.apache.log4j.spi.LoggingEvent;

public?class?CustomerLogFilter?extends?Filter?{

boolean?acceptOnMatch?=?false;

private?String?levelMin;

private?String?levelMax;

public?String?getLevelMin()?{

return?levelMin;

}

public?void?setLevelMin(String?levelMin)?{

this.levelMin?=?levelMin;

}

public?String?getLevelMax()?{

return?levelMax;

}

public?void?setLevelMax(String?levelMax)?{

this.levelMax?=?levelMax;

}

public?boolean?isAcceptOnMatch()?{

return?acceptOnMatch;

}

public?void?setAcceptOnMatch(boolean?acceptOnMatch)?{

this.acceptOnMatch?=?acceptOnMatch;

}

@Override

public?int?decide(LoggingEvent?lgEvent)?{

int?inputLevel?=?lgEvent.getLevel().toInt();

if(inputLevel>=getLevel(levelMin)?&&?inputLevel?<=?getLevel(levelMax)){

return?0;

}

return?-1;

}

private?int?getLevel(String?level){

level?=?level.toUpperCase();

if(level.equals("CUSTOMER")){

return?LevelType.CUSTOMER.getType();

}

if(level.equals("OFF")){

return?LevelType.OFF.getType();

}

if(level.equals("FATAL")){

return?LevelType.FATAL.getType();

}

if(level.equals("ERROR")){

return?LevelType.ERROR.getType();

}

if(level.equals("INFO")){

return?LevelType.INFO.getType();

}

if(level.equals("WARN")){

return?LevelType.WARN.getType();

}

if(level.equals("DEBUG")){

return?LevelType.DEBUG.getType();

}

if(level.equals("ALL")){

return?LevelType.ALL.getType();

}

return?LevelType.OFF.getType();

}

private?static?enum?LevelType{

OFF(2147483647),

FATAL(50000),

ERROR(40000),

WARN(30000),

INFO(20000),

DEBUG(10000),

ALL(-2147483648),

CUSTOMER(20050);

int?type;

public?int?getType()?{

return?type;

}

private?LevelType(int?type)?{

this.type?=?type;

}

}

}

3、配置文件的設置:

log4j:configuration?SYSTEM?"log4j.dtd">

4、測試類

package?common.test;

import?org.apache.log4j.Logger;

import?common.log.CustomerLog;

public?class?Test?{

private?static?final?Logger?logger?=?Logger.getLogger("customer");

public?static?void?main(String[]?args)?{

CustomerLog.customerLog(logger,?"自定義日志級別");

logger.info("哈哈哈哈");

}

}

5、運行結果:

2014-05-24 17:22:45,647 [CUSTOMER] customer - 自定義日志級別

2014-05-24 17:22:45,648 [INFO] customer - 哈哈哈哈

6、通過修改

上面的 Value 值來控制日志的輸出級別。

另外說明常用log4j日志級別具體值:

public class Level extends Priority

implements Serializable {

public static final int TRACE_INT = 5000;

public static final Level OFF = new Level(2147483647, "OFF", 0);

public static final Level FATAL = new Level(50000, "FATAL", 0);

public static final Level ERROR = new Level(40000, "ERROR", 3);

public static final Level WARN = new Level(30000, "WARN", 4);

public static final Level INFO = new Level(20000, "INFO", 6);

public static final Level DEBUG = new Level(10000, "DEBUG", 7);

public static final Level TRACE = new Level(5000, "TRACE", 7);

}

像FATAL、ERROR這些級別,實際上對應一數字50000、40000

總結

以上是生活随笔為你收集整理的java自定义日志级别_自定义log4j日志级别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。