首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Spring应用程序中,使用Java而不使用log4j2提供初始化的正确方法是什么?

在Spring应用程序中,使用Java而不使用log4j2提供初始化的正确方法是什么?
EN

Stack Overflow用户
提问于 2015-07-01 19:03:13
回答 3查看 5.4K关注 0票数 2

我有一个带有log4j2的(4.0)。这个webapp不使用web.xml,通过Java负责配置。Log4j2配置需要在外部配置文件中进行,而不是在类路径.上进行。

在与web.xml的前一次化身中,我们有

代码语言:javascript
运行
复制
<context-param>
    <param-name>log4jConfiguration</param-name>
    <param-value>file:///path/to/log4j2.xml</param-value>
</context-param> 

而且这起作用了。

在新的web.xml-less世界中,我尝试了这样的方法:

代码语言:javascript
运行
复制
public class WebappInitializer 
extends AbstractAnnotationConfigDispatcherServletInitializer 
{

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        System.out.println("WebappInitializer.onStartup()");
        servletContext.setAttribute("log4jConfiguration", "file:///path/to/log4j2.xml");

这不管用。这似乎发生得太晚了,而且无论如何都行不通。日志显示:

代码语言:javascript
运行
复制
ERROR StatusLogger No Log4j context configuration provided. This is very unusual.
WebappInitializer.onStartup()

并且没有发生log4j日志记录。

在web.xml无Spring应用程序中用web.xml代替这个上下文的正确方法是什么?

更新:

我可以通过添加以下web.xml来解决这个问题:

代码语言:javascript
运行
复制
<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
          version="3.0">

    <context-param>
        <param-name>log4jConfiguration</param-name>
        <param-value>file:///path/to/log4j2.xml</param-value>
    </context-param> 

</web-app>

当然,一定有更好的办法!

EN

Stack Overflow用户

发布于 2015-07-02 18:49:25

我还没有对其进行测试,但以下几项应该值得一试;将onStartup(…)方法中的Log4jConfigurer调用替换为以下Log4jConfigurer调用:

代码语言:javascript
运行
复制
Log4jConfigurer.initLogging("file:///path/to/log4j2.xml")

这基本上就是在log4jConfigLocation文件的<context-param>中使用web.xml文件时所发生的事情(通过Log4jWebConfigurer,参见代码)。

我只想知道这是否也适用于log4j2,尽管我也不希望<context-param>的方法能够使用它。当您仍然使用log4j2文件时,您也使用了web.xml吗?

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31169581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档