当前位置: 首页 > 面试题库 >

在Java Web应用程序中,如何使用Spring 3.0批注从WEB-INB / conf位置读取log4j.xml

上官景铄
2023-03-14
问题内容

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

将不胜感激任何帮助/链接/指针。


问题答案:

不知道您真正想做什么…

如果您的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>

希望能帮助到你



 类似资料:
  • 我正在开发一个使用Hibernate的简单JSF应用程序。我将所有必需的库导入WEB-INF/lib文件夹,并将它们指向类路径。但是当我尝试编译它时,我遇到了错误: 这是我创建SessionFactory并使用它的代码: 我在这里使用它: 那我做错了什么?我该怎么解决这个问题?

  • 我在包'\src\main\resources\'中有一个文件。我希望在位于'src\main\java\com\xxxx\xxxx\services\'的。java文件中读取该文件。当我运行以下代码时, 我将USER_DIRECTORY的值设置为'C:\workspace\apache-tomcat-7.0.70\bin',将DOCUMENT_DIRECTORY的值设置为'C:\workspac

  • 我在ADLS GEN-2中有一个application.conf文件。我试图通过挂载容器将文件读入数据库。我正在做下面的操作,文件没有开始读取。 我收到错误信息,例如:找不到关键字“HeNAppConf”的配置设置。但是我有

  • 我想把我的项目换成基于spring的产品。 我的第一步是将我的java web应用程序从一个生成的WAR文件转换成一个独立的可执行jar,它由Spring引导驱动。 让我们从GITHUB获取一个开源Web应用示例。vaadinspringweb应用程序 网络。xml文件可以在这里找到。 根上下文文件可以在这里找到。 我希望有一些指导我执行转换。 我还提交了Spring启动项目中的一个问题。

  • 这是我的选项2选项 但它给出了一个错误的说法 java.io.FileNotFoundException:C:\users\businesssupport\documents\netBeansProjects\InvoiceGenerator\resources\hemaslogo.jpg(系统找不到指定的路径)

  • 在99%的情况下,当SQL server返回意外错误或文件系统中缺少文件时,我不能做任何合理的事情,我只想记录这种情况并将错误返回给用户。所以我看不出有什么理由应该返回“err”手动展开堆栈,实际上我会丢失stacktrace和上下文,并且更难找到错误的原因。 有没有什么我错过了,所以这种方法不会很好地工作?似乎大多数Go文章都建议不要使用panic/recover,但我不明白为什么。它看起来非常

  • 我试图通过以下教程在我的Web应用程序中配置log4j2。我正在使用glassfish 4.1。1服务器和servlet版本3.1。我可以使用以下配置配置日志功能: log4j。性质 属性文件放在src/main/资源文件夹中 网状物xml 定义文件位置的上下文参数被注释掉。默认情况下,log4j可能会查找名为log4j的文件。财产。不过,我只是想知道指定文件位置的方法是否正确。 我也不确定哪个j

  • 我有一个Angular project web app,在我使用“ng build…”构建它之后,它正在Apache web服务器中成功运行命令现在,我想让它成为Android应用程序,为此,我尝试使用Cordova。首先,我创建了一个Cordova项目,然后在www目录下,我放置了来自NG的文件。是的,在那之前我还使用了Cordova平台add android。但是,当我在模拟器或真实设备上安装