本文主要是介绍Tomcat| tomcat日志国际化实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考: https://blog.csdn.net/iteye_8118/article/details/82600564
tomcat在运行的过程中,不同的国家输出的信息(log信息)是不同的语言,通过以下方法做到的:
根据本地化对象来实现,它封装了适用于本地环境的资源。
tomcat将一些资源配置信息写入properties文件中,这样便于读取与编辑,如果将所有类的错误信息都写在一个properties文件,优惠导致文件太大,不便于读写。为避免这种情况,tomcat将properties文件按照不同的包进行划分,每个包下都有自己的properties文件。org.apache.catalina.connector包下的properties文件包含了该包下所有的类中可能抛出的错误与配置信息。每个properties文件都由一个org.apache.catalina.util.StringManager实例来处理。在tomcat运行时,会建立很多StringManager类的实例,每个实例对应一个properties文件。
在每个类需要查找某个配置的提示信息时,会先获取对应的StringManager实例。
eg:
StandardServer.java类来说(只贴出部分代码):
public static final String Package = "org.apache.catalina.core";//上面的这个属性来自Constants.java类里private static Hashtable managers = new Hashtable();/*** The string manager for this package.*/private static final StringManager sm =StringManager.getManager(Constants.Package);public synchronized static StringManager getManager(String packageName) {StringManager mgr = (StringManager)managers.get(packageName);if (mgr == null) {mgr = new StringManager(packageName);managers.put(packageName, mgr);}return mgr;}private StringManager(String packageName) {String bundleName = packageName + ".LocalStrings";try {bundle = ResourceBundle.getBundle(bundleName);return;} catch( MissingResourceException ex ) {
而在StandardServer.java类中是这样使用的,
public void start() throws LifecycleException {// Validate and update our current component stateif (started) {log.debug(sm.getString("standardServer.start.started"));//根据这里的key值在资源文件中查找对应的value值,LocalStrings.properties资源文件中可以找到standardServer.start.started=This server has already been started配置项return;}
如果本地环境为日文系统,那么通过org.apache.catalina.startup.LocalStrings键值取得的资源是org.apache.catalina.startup.LocalStrings_ja.properties中的文件信息。最后通过bundle.getString(key);方法,即可得到本地资源信息。
ResourceBundle.getBundle("config.page");使用方法得学习一下
项目中对日志内容等进行国际化管理。并且,日志内容用两个文件处理。日志内容资源文件是Log.properties.那么建立两个资源束分别处理这这个本地资源。bundle = ResourceBundle.getBundle("Log.");使用时,只需要添加不同的本地信息即可。例如:Log_ja.properties,Log_en.properties等
这篇关于Tomcat| tomcat日志国际化实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!