Java 当您不需要本地化时,是否有一种最简单的方法来获取默认ResourceBundle?
我想继承以扩展Java 当您不需要本地化时,是否有一种最简单的方法来获取默认ResourceBundle?,java,logging,resourcebundle,java.util.logging,Java,Logging,Resourcebundle,Java.util.logging,我想继承以扩展java.util.logging.Logger。唯一可见的构造函数是 protected Logger(String name, String resourceBundleName) 尽管这样,当您想要获得一个实例时,它们提供了两种方式: static Logger getLogger(String name) static Logger getLogger(String name, String resourceBundleName) 有没有一种方法可以获取某种
java.util.logging.Logger
。唯一可见的构造函数是
protected Logger(String name, String resourceBundleName)
尽管这样,当您想要获得一个实例时,它们提供了两种方式:
static Logger getLogger(String name)
static Logger getLogger(String name, String resourceBundleName)
有没有一种方法可以获取某种默认的ResourceBundle
或ResourceBundle
的默认名称,这样我就可以使用构造函数,而无需创建国际化属性文件和关联对象
当然,我可以简单地生成一个包装类并使用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()。super(name,resourceName)
构造器构建的内容在第二个参数为null
时不进行任何日志记录
不幸的是,这意味着我必须为我想要使用的每个记录器方法实现一个包装器方法。(打字太多)
没必要这么做,已经做过了。看一看,它们围绕java.util.logging提供了合理的包装,隐藏了该API的糟糕之处
这两个API还可以委托给适当的底层日志实现,例如Logback或Log4J,完全绕过java.util.logging