2012-11-07 128 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源类中描述。