我想将我的log4j.xml文件放在WEB-INF / conf目录中,其中有许多其他配置文件。我希望Web应用程序从那里读取log4.xml。
我试图使用spring3.0和注释。所以不确定如何访问servlet上下文以获取WEB-INF位置。
尝试了这个
InputStream ist = Thread.currentThread().getContextClassLoader().getResourceAsStream("/conf/log4j-my.xml");
但它搜索到tomcat / bin /
试过这个,但没多大帮助
DOMConfigurator.configure("WEB-INF/conf/log4j-my.xml");
非常感谢任何帮助/链接/指针。
答案 0 :(得分:4)
不确定你真正想做什么......
如果您的log4j.xml在类路径中,当您启动app-server时,它应该自动加载。
启动服务器时检查控制台,您应该看到log4j信息。
你也可以把debug = true:
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
你的xml中的。您将能够看到有关配置的大量信息。
现在,如果你想访问你在log4j.xml中配置的appender,你所要做的就是:
Logger mylogger = Logger.getLogger("MyAppenderName");
好的,我想你想加载一个自定义的log4j配置文件!在Web应用程序上下文中,您将需要两件事:
创建contextListnerServlet; 修改你的web.xml
ServletListner:
public class StartupListener implements ServletContextListener
{
@Override
public void contextDestroyed(ServletContextEvent arg0)
{
// Cleanup code goes here
}
@Override
public void contextInitialized(ServletContextEvent sce)
{
Logger logger = null;
String log4jFile = sce.getServletContext().getInitParameter("log4jFileName");
DOMConfigurator.configure(sce.getServletContext().getRealPath(log4jFile));
logger = LogManager.getLogger(StartupListener.class.getName());
logger.debug("Loaded: " + log4jFile);
}
的web.xml:
<context-param>
<param-name>log4jFileName</param-name>
<param-value>
WEB-INF/config/log4j-my.xml
</param-value>
</context-param>
<listener>
<listener-class>
com.yourpackage.StartupListener
</listener-class>
</listener>
希望有所帮助