【发布时间】:2014-06-30 19:34:45
【问题描述】:
在 log4j.xml 配置中使用 JVM 变量不起作用...
System.setProperty("log_dir", logDirPath);
<param name="file" value="${log_dir}\toto.log" />
如果我在调试时重新加载我的网络服务器,它会起作用...
** 更新
package com.webapp.startup;
import java.io.PrintStream;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import com.webapp.objects.impl.LoggingOutputStream;
public class Log4jStartup implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
}
@Override
public void contextInitialized(ServletContextEvent event) {
try {
ServletContext context = event.getServletContext();
System.setProperty("log_dir", "C:/path");
System.setErr(new PrintStream(new LoggingOutputStream(Logger.getRootLogger(), Level.ERROR), true));
System.setOut(new PrintStream(new LoggingOutputStream(Logger.getRootLogger(), Level.INFO), true));
String path = context.getRealPath("/WEB-INF/classes/log4j.xml");
PropertyConfigurator.configure(path);
} catch (Exception e) {
e.printStackTrace();
}
}
}
在 setErr 和 setOut 之前初始化属性... 谢谢大家!
【问题讨论】:
标签: java variables dynamic jvm log4j