有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java当您不需要本地化时,有没有一种最简单的方法来获取默认ResourceBundle?

我想继承以扩展java.util.logging.Logger。唯一可见的构造函数是

protected Logger(String name, String resourceBundleName)

尽管这样,当您想要获得一个实例时,它们提供了两种方式:

static Logger   getLogger(String name)
static Logger   getLogger(String name, String resourceBundleName)  

有没有一种方法可以获得某种默认的ResourceBundleResourceBundle的默认名称,这样我就可以在不创建国际化属性文件和关联对象的情况下使用构造函数

当然,我可以简单地生成一个包装类并使用getLogger(String name)来避免使用ResourceBundle名称。不幸的是,这意味着我必须为我想要使用的每个Logger方法实现一个包装器方法。(打字太多)

编辑:以下从记录器获取默认本地化数据的尝试无效

import java.util.logging.Logger;

class JLogger extends Logger
{
    static Logger dummyLogger = Logger.getLogger("com.dummy.utilities");

    private JLogger(String name)
    {
        super(name, JLogger.dummyLogger.getResourceBundleName());
    }

    static JLogger getJLogger(String name)
    {
        return new JLogger(name);
    }

    public void severe() // a zero arguments version of severe
    {
        severe("");
    }
}

getResourceBundleName()只返回空值。如果第二个参数是null,那么super(name, resourceName)构造函数构建的内容不会进行任何日志记录


共 (1) 个答案

  1. # 1 楼答案

    Unfortunately that means I would have to implement a wrapper method for every Logger method I want to use. (Too much typing).

    没必要这么做,已经做过了。看看SLF4JCommons Logging,它们提供了有关java的合理包装。util。日志记录,隐藏API的可怕之处

    这两个API还可以绕过java,委托给适当的底层日志实现,如Logback或Log4J。util。全部记录