加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java log4j记录优先级问题

发布时间:2020-12-15 02:24:30 所属栏目:Java 来源:网络整理
导读:log4j的Level类具有以下构造函数: protected Level(int level,String levelStr,int syslogEquivalent) 我的问题是,何时使用String levelStr参数? 我已经定义了自己的自定义appender,并在其中定义了一个自定义级别,如下所示: public static class CustomLe
log4j的Level类具有以下构造函数:

protected Level(int level,String levelStr,int syslogEquivalent)

我的问题是,何时使用String levelStr参数?
我已经定义了自己的自定义appender,并在其中定义了一个自定义级别,如下所示:

public static class CustomLevel extends Level {
  private static final long serialVersionUID = 1L;
  public static final Level ALERT = new CustomLevel(FATAL_INT,"ALERT",2);
  protected CustomLevel(int level,int syslogEquivalent) {
           super(level,levelStr,syslogEquivalent);
      }
 }

在我的appender中,在append方法中我做:

Level newLevel = CustomLevel.ALERT; 
etc.

LoggingEvent newLoggingEvent = new LoggingEvent(
            event.getFQNOfLoggerClass(),event.getLogger(),event.getTimeStamp(),newLevel,event.getMessage(),event.getThreadName(),event.getThrowableInformation(),event.getNDC(),event.getLocationInformation(),event.getProperties()); 
super.append(newLoggingEvent);

在日志的输出中,当我做custom_Logger.fatal(msg);我可以看到我的消息,但级别是致命的.

main FATAL logging.customlog - Send an Error Message to log

我认为它会在我的自定义级别(即主ALERT)中定义为ALERT.
我在这做错了吗?我不应该在输出日志中看到ALERT吗?
如果没有,那么leveStr何时使用?

解决方法

您正在初始化级别,但您没有覆盖Level类中的其余方法.因此,当Logger调用CustomeLevel.toLevel(String)来获取级别的名称时,它将其设置为“FATAL”

查看示例
http://jaitechwriteups.blogspot.com/2006/07/create-your-own-logging-level-in-log4j.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读