前言:
眼前同学们对“java核心技术卷一电子版下载”都比较关怀,咱们都需要知道一些“java核心技术卷一电子版下载”的相关知识。那么小编同时在网络上网罗了一些对于“java核心技术卷一电子版下载””的相关知识,希望看官们能喜欢,你们一起来学习一下吧!原文7.5.4 本地化
你可能希望将日志消息本地化,以便全球用户都可以阅读。应用程序的国际化问题将在卷Ⅱ的第7章中讨论。下面简要说明本地化日志消息时需要牢记的一些要点。
本地化的应用程序包含资源包(resource bundle)中的本地特定信息。资源包包括一组映射,分别对应各个本地化环境(如美国或德国)。例如,一个资源包可能将字符串"readingFile"映射为英文的"Reading file"或者德文的"Achtung! Datei wird eingelesen"
一个程序可以包含多个资源包,例如一个用于菜单,另一个用于日志消息。每个资源包都有一个名字(如"com.mycompany.logmessages")。要想为资源包增加映射,需要对应每个本地化环境提供一个文件。英文消息映射位于com/mycompany/logmessages_en.properties文件中,德文消息映射位于com/mycompany/logmessages_de.properties文件中。(en和de是语言编码。)可以将这些文件与应用程序的类文件放在一起,以便ResourceBundle类自动找到它们。这些文件都是纯文本文件,包含如下所示的条目:
readingFile=Achtung! Datei wird eingelesen
renamingFile=Datei wird umbenannt
...
请求一个日志记录器时,可以指定一个资源包:
Logger logger=Logger.getLogger(loggerName,"com.mycompany.logmessages");
然后,为日志消息指定资源包的键,而不是具体的日志消息字符串:
logger.info("readingFile");
通常需要在本地化的消息中包含一些参数,因此,消息可以包括占位符{0}、{1}等。例如,要想在日志消息中包含文件名,可以如下使用占位符:
Reading file{0}.
Achtung! Datei {0} wird eingelesen.
然后,通过调用下面的一个方法向占位符传递具体的值:
logger.log(Level.INFO, "readingFile", fileName);
logger.log(Level.INFO,“renamingFile", new Object[]{ oldName, newName });
或者,在Java9中,可以在logrb方法中指定资源包对象(而不是名字):
logger.logrb(Level.INFO,bundle,"renamingFile",oldName, newName);
注释:这是唯一一个可以为消息参数使用可变参数的日志记录方法
标签: #java核心技术卷一电子版下载