在java web应用程序中,如何使用spring 3.0注释从WEB-INB/conf位置读取log4j.xml

发布于 2024-11-30 17:39:41 字数 431 浏览 1 评论 0原文

我想将 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");

希望有任何帮助/链接/指针。

I wanted to put my log4j.xml file in WEB-INF/conf directory where I have many other configuration files. And I wanted the web application to read log4.xml from there.

I was trying to use spring3.0 and annotations. So not sure how to access the servlet context to get the WEB-INF location.

tried this

InputStream ist = Thread.currentThread().getContextClassLoader().getResourceAsStream("/conf/log4j-my.xml");

but it searches under to tomcat/bin/

Tried this but did't help much
DOMConfigurator.configure("WEB-INF/conf/log4j-my.xml");

Would appreciate any help/links/pointer.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

总攻大人 2024-12-07 17:39:41

不确定你真正想做什么......

如果你的 log4j.xml 在类路径中,当你启动你的应用程序服务器时,它应该会自动加载。

启动服务器时检查控制台,您应该会看到 log4j 信息。

您还可以将 debug=true: 放入

<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">

xml 中。您将能够看到有关您的配置的大量信息。

现在,如果您想访问在 log4j.xml 中配置的附加程序,您所要做的就是:

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>

希望有帮助

Not sure what you really wanna do....

if your log4j.xml is in the classpath, when you start your app-server, it should be loaded automatically.

Check the console when you start your server and you should see your log4j info.

You can also put debug=true:

<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">

in your xml. you will be able to see a lot of info about your config.

Now if you want to access the appenders you configured in the log4j.xml, all you have to do is:

Logger mylogger = Logger.getLogger("MyAppenderName");

Ok, i think you wanna load a custom log4j config file! In a web app context, you will need 2 things:

create a contextListnerServlet;
modify your 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>

Hope it helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文