问题讨论:使用java.util.logging,每个项目使用自己的logging.properties配置文件
来源:互联网 发布:日照光华网络教育 编辑:程序博客网 时间:2024/06/05 20:23
问题讨论:使用java.util.logging,每个项目使用自己的logging.properties配置文件
主题:logging.properties配置文件
详细描述:使用jdk的java.util.logging,项目使用自己的配置文件,而不是默认配置文件(jre/lib/logging.properties)
问题点:
1、LogManager配置文件获取
2、初始化操作的判断
解决方法讨论
1
方法:LogManager通过readConfiguration()读取默认配置文件,则可以MyLogManager继承LogManager,并重写LogManager的readConfiguration()方法:修改配置文件路径。
结论:方法可行,但是太傻
原因:由于java.util.logging类其他类都是使用LogManager,需要重写所有类2
2
方法:使用一个初始化类,初始化LogManager:readConfiguration(aimBin)
结论:方法可行,但是每次调用Logger的日志都需要做初始化判断。十分繁琐
原因:可行原因是LogManager是单例的。
3
方法:重写Logger,并添加LogManager的初始化
结论:可行
代码示例
package org.hh.myproj.logmanager;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.LogManager;
import java.util.logging.Logger;
/**
* 重写Logger类,在该类中添加LogManager配置的初始化操作
* @author
*
*/
public class MyLogger extends Logger{
static LogManager logManager ;//= LogManager.getLogManager();
//优先从项目路径下的config/loggging.properties取配置,取不到则使用默认配置
static{
if (logManager==null){
File userDir = new File(System.getProperty("user.dir"));
if (!userDir.exists()) {
throw new Error("找不到工作路径!");
}
File configFile = null;
InputStream in = null;
BufferedInputStream bin = null;
try{
configFile = new File(userDir.getPath()+"\\config","logging.properties");
in = new FileInputStream(configFile);
bin = new BufferedInputStream(in);
}catch(Exception e){
logManager = LogManager.getLogManager();
}
try {
if (logManager==null) {
logManager = LogManager.getLogManager();
logManager.readConfiguration(bin);
}
} catch(Exception e){
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
public static Logger getLogger(String name){
return Logger.getLogger(name);
}
protected MyLogger(String name, String resourceBundleName) {
super(name, resourceBundleName);
// TODO Auto-generated constructor stub
}
}
结果:从config/logging.properties读取配置,读取不到则使用默认配置
- 问题讨论:使用java.util.logging,每个项目使用自己的logging.properties配置文件
- java.util.logging.Logger的使用总结
- java.util.logging.logger的使用
- java.util.logging使用示例
- 正确使用java.util.logging包
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger 使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger 使用例程
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- java.util.logging.Logger使用详解
- 讲师秀之7:林仕鼎谈架构设计与架构师
- Android环境的搭建的一些思考
- eclipse中RMI编程环境的搭建与编程示例
- plsa matlab实现
- 深拷贝与浅拷贝解析
- 问题讨论:使用java.util.logging,每个项目使用自己的logging.properties配置文件
- 解决torndb(目前对MySQLdb最好的封装)在python3.x下不能用的问题
- 升级gcc后glibc报错
- Android系统架构学习
- 解决织梦DedeCMS恶意注册的方法
- 两年内从零到每月十亿 PV 的发展来谈 Pinterest 的架构设计
- UVa 10098 - Generating Fast
- android应用多主题
- Little Zhang