
http://logging.apache.org/site/binindex.cgi
对源码进行浏览后,估计需要修改的文件应该是
src\java\org\apache\log4j\helpers\OptionConverter.java
在这个文件可以看到,log4j 对 ${} 这种形式的变量会进行以下转换
// first try in System properties
String replacement = getSystemProperty(key, null)
// then try props parameter
if(replacement == null &&props != null) {
replacement = props.getProperty(key)
}
就是说,会先从系统变量中读取属性值,如果系统变量不存在这个属性,就从log4j配置文件中属性中读取.
问题就在这里了!
并没有从环境变量中读取,因此,增加一个函数:
public
static
String getEnvProperty(String key, String def) {
try {
String value = System.getenv(key)
if (value == null)
value = def
return value
} catch(Throwable e) { // MS-Java throws com.ms.security.SecurityExceptionEx
LogLog.debug("Was not allowed to read system property \""+key+"\".")
return def
}
}
是的,通过调用 System.getenv() ,就可以从环境变量中读取属性值了.
再修改刚才的代码
// first try in System properties
String replacement = getSystemProperty(key, null)
// then try in environment properties
if (replacement == null)
{
replacement = getEnvProperty(key, null)
}
// then try props parameter
if(replacement == null &&props != null) {
replacement = props.getProperty(key)
}
ok, 代码修改工作完毕, 现在需要编译了.(当然,你需要先安装 ant 和 java. 以后我贴相应的安装文档出来.)
在 logging-log4j-1.2.11 目录下输入
ant
会提示要加参数,所以改为输入
ant build
编译通过,但发现有其它问题,不过不要紧了,已经有这个文件就可以了
logging-log4j-1.2.11\dist\classes\org\apache\log4j\helpers\OptionConverter.class
要正常生成 jar 文件,可能需要其它库文件支持,但不是我研究的方向了.
我只要把这个 OptionConverter.class 放到 log4j-1.2.11.jar 文件里, 替换掉旧的 OptionConverter.class 就可以了.
howto? easy job. 用 winrar 打开 log4j-1.2.11.jar, 用新的 OptionConverter.class 覆盖掉旧的, done!
最后一步, 把这个新的log4j-1.2.11.jar 布署到你的系统中,就可以了.
或者改一个名字? log4j-1.2.11-pro.jar ? 增强版~ 咔咔, well done!
1. 动态的改变记录级别和策略,不需要重启Web应用,如《Effective Enterprise Java》所说。 2. 把log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。因为 系统把web目录的路径压入一个叫webapp.root的系统变量。这样写log文件路径时不用写绝对路径了.log4j.appender.logfile.File=${webapp.root}/WEB-INF/logs/myfuse.log 3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path。 4.log4jRefreshInterval为60000表示 开一条watchdog线程每60秒扫描一下配置文件的变化 在web.xml 添加 <context-param><param-name>log4jConfigL欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)