匹配属性文件中的日志级别,其中Enum设置用于记录级别,并根据层次结构显示日志

时间:2013-01-05 00:08:37

标签: java logging enums

在我的记录器类

public enum LogLevel {
    NOLOG("6") , ERROR("5"), WARN("4"), INFO("3"), DEBUG("2"), TRACE("1") ;}

我希望能够从属性文件中读取日志级别,并在logger类中将其匹配,我的应用程序应使用loglevels将日志写入db。 假设它在NOLOG中 - >没有记录发生 如果它的调试 - >发生错误,警告,信息和调试等等。

我能够将日志消息写入db并从属性文件中读取日志级别。

如何将其与我的记录器类中的枚举相匹配,然后在层次结构上显示日志消息?

2 个答案:

答案 0 :(得分:0)

您可以使用if-elif语句。您可以通过执行

从枚举中获取int值
Logleve.NOLOG.ordinal()

从属性文件中读取日志级别,在枚举文件中将其进行比较,然后将logger属性更新为该级别。

另外,您是否有理由不使用Java的内置记录器或log4j?

答案 1 :(得分:0)

您可以添加如下静态工厂方法:

public enum LogLevel {
    NOLOG("6") , ERROR("5"), WARN("4"), INFO("3"), DEBUG("2"), TRACE("1") ;

    private Integer value;

    LogLevel(Integer value) {
        this.value = value;
    }

    public static LogLevel levelOf(Integer value) {
        for (LogLevel level : LogLevel.values()) {
            if (level.value.equals(value)) {
                return level;
            }
        }
        return null;
    }
}

当您从属性文件中获取值时,您可以自然地获取LogLevel对象:

LogLevel level = LogLevel.levelOf(somePropertyObject.getIntValue());