2012-11-07 129 views
5

我寫類的自定義日誌記錄級別即現在INITLog4j的日誌記錄

import org.apache.log4j.Logger; 
import org.apache.log4j.Level; 

public class InitLoggingLevel extends Level { 

    public static final String INITLOGGING_LEVEL = "INITLOGGING"; 
    public static final Level INIT_LOGGING = new InitLoggingLevel(
     DEBUG_INT - 4, INITLOGGING_LEVEL, 7); 

    protected InitLoggingLevel(int level, String levelStr, int syslogEquivalent){ 
     super(level, levelStr, syslogEquivalent); 
    } 
} 

什麼是我需要log4j.properties進行修改和我會如何用這個INIT日誌記錄級別在Java中自定義日誌級別我的Java類?

回答

1

你可以試試這個

log4j.rootLogger=DEBUG, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %c:%L - %m%n 
log4j.category.YOUR_PACKAGE=INFO,YOUR_PACKAGE.InitLoggingLevel 

或可以查看log4j categoryhttp://veerasundar.com/blog/2009/08/log4j-tutorial-how-to-send-log-messages-to-different-log-files/

+1

我在log4j.properties中要求更改記錄器中的日誌級別爲INIT。 –

+1

log4j.category.com.impact.qtl12.commons = INIT,com.impact.qtl12.commons.InitLoggingLevel像這樣,以及我將如何在java類中執行此操作,就像正常記錄器一樣:logger.WARN so how我可以通過做logger.INIT或其他東西INIT水平 –

0

它可以是這樣的:

<category name="xxx" additivity="false"> 
      <priority class="your class" value="info"/> 
      <appender-ref ref="xxxlog"/> 
     </category> 
+0

我要求log4j.properties –

2

你必須:

  1. 覆蓋的方法toLevel(String logArgument)這樣的:

    public static Level toLevel(String logArgument) { 
        if (logArgument != null && logArgument.toUpperCase().equals("INITLOGGING")) { 
         return INIT_LOGGING; 
        } 
        return (Level) toLevel(logArgument); 
    } 
    
  2. 寫這樣的log4j.properties的配置行:

    log4j.logger.[MY_CATEGORY]=INITLOGGING#your-package.InitLoggingLevel

就這些!

P.S .:'#'語法在org.apache.log4j.helpers.OptionConverter源類中描述。