当前位置: 首页 > 知识库问答 >
问题:

3.0 servlet中的Log4J2配置

田柏
2023-03-14

我试图根据文档(以及相关的SO问题)设置LOG4J,但它不会创建假定的文件,但WildFly中有这样的日志:

No Log4j context configuration provided. This is very unusual

web.xml

<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>log4jConfigLocation</param-name>
     <param-value>/WEB-INF/classes/log4j2.xml</param-value>
</context-param>

app.war/WEB-INF/类/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="30">
    <!-- http://logging.apache.org/log4j/2.x/manual/configuration.html -->
    <Properties>
        <Property name="filename">c:/oauth.log</Property>
    </Properties>

    <Filter type="ThresholdFilter" level="trace"/>

    <Appenders>
        <Appender type="File" name="File" fileName="${filename}">
            <Layout type="PatternLayout">
                <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
            </Layout>
        </Appender>
        <File name="MyFile" fileName="c:/oauth2.log" immediateFlush="true">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>

    <Loggers>
        <Logger name="cz.literak.demo" level="debug" additivity="true">
            <AppenderRef ref="File"/>
        </Logger>
        <Root level="error">
            <AppenderRef ref="MyFile"/>
        </Root>
    </Loggers>

</Configuration>

app.war/WEB-INF/lib

commons-logging-1.1.3.jar
json-smart-1.1.1.jar
log4j-api-2.0-rc1.jar
log4j-core-2.0-rc1.jar
log4j-jcl-2.0-rc1.jar

你能告诉我怎么了吗?我尝试在web.xml中注释掉上下文参数,并依赖自动配置,但是没有变化。

编辑

当我添加以下代码时

<context-param>
    <param-name>log4jContextName</param-name>
    <param-value>oauthDemo</param-value>
</context-param>

失败的方式不同(我现在没有时间调查)

07:41:29,269 INFO  [io.undertow.servlet] (MSC service thread 1-12) Log4jServletContainerInitializer starting up Log4j in Servlet 3.0+ environment.
07:41:29,644 INFO  [stdout] (MSC service thread 1-12) 2014-02-20 07:41:29,643 ERROR FileManager (c:/oauth2.log) java.io.FileNotFoundException: c:\oauth2.log (Přístup byl odepřen)
07:41:29,646 INFO  [stdout] (MSC service thread 1-12) 2014-02-20 07:41:29,645 ERROR Unable to invoke method createAppender in class org.apache.logging.log4j.core.appender.FileAppender for element File 07:41:29,647 INFO    [stdout] (MSC service thread 1-12)    at org.apache.logging.log4j.core.config.BaseConfiguration.createPluginObject(BaseConfiguration.java:913)

共有2个答案

伍光济
2023-03-14

Log4J将在类路径中查找log4j2.xml配置文件,除非指定了位置。您是否尝试过不指定log4j2.xml文件的位置(即从web.xml中删除context-参数的东西),而简单地依赖于将配置放在类路径中?(app.war/WEB-INF/classes/log4j2.xml在我看来很好)

请注意,该文件必须命名为 log4j2.xml而不是 log4j.xml

谢典
2023-03-14

作为参考,本页介绍了如何配置Log4j2:

https://logging . Apache . org/log4j/2 . x/manual/web app . html # context params

在我的例子中,我没有在web.xml中配置任何上下文参数。我唯一要做的就是设置显示名称:

<display-name>My Admin API</display-name>

我还使用log4j2.yaml代替xml文件,并且该文件不在war中。也请注意,在这一页https://logging.apache.org/log4j/2.x/manual/webapp.html他们说有一个Tomcat版本的问题

 类似资料:
  • 我正在使用log4j的现有系统上工作,我想更新到log4j2。 有一个自定义Springbean从文件加载配置。我需要保持这种方法。我不能使用"log4j.configuration文件"系统属性。 我们有一个属性文件,其中指定了当前log4j.xml的路径(NFS共享) Springbean有以下代码。。。 } 在log4j2中,没有PropertyConfiguration。如何加载log4j

  • 我们希望将所有java应用程序日志集中在Graylog服务器上。我们使用apache tomcat作为容器,使用log4j作为日志框架。log4j2.xml 伐木工人 日志详细信息 正如你们所见,我的应用程序与gray log server创建了一个套接字连接。但是我们在灰色日志服务器上没有看到任何日志 版本:tomcat-9.0.16.0 jdk-1.8.0_201-b09(64位) log4j

  • 最近,我决定学习如何使用log4j2记录器。我下载了所需的jar文件,创建了库,xml编译文件,并尝试使用它。不幸的是,我在console(Eclipse)中得到了这样的语句: 这是我的测试类代码: 和我的xml配置文件: 我还尝试使用不带标记的xml,以及包规范和各种文件夹/包目录,但没有帮助。现在我的文件直接位于Eclipse的project文件夹中。

  • 我有多模块spring boot项目,我添加了log4j2作为日志机制,它在启动服务器时抛出下面的异常。 引起原因:java.lang.ClassNotFoundExcoop:非法访问:此Web应用程序实例已被停止。无法加载[org.apache.logging.log4j.message.参数化消息]。以下堆栈跟踪被抛出用于调试目的以及试图终止导致非法访问的线程。在org.apache.cata

  • 我是春靴的新手。我有一个跑步Spring靴项目。我想使用log4j2(由于项目限制,我必须使用log4j2本身)将不同级别的所有日志重定向到一个名为'test.log'的日志文件。 ---我的测试API的控制器也有以下测试日志行: ---在我的理解中,我已经在代码中包含了所有必需的内容。但是我面临着这个问题--当我使用API时,只有hibernate调试记录器被添加到test.log中;我在con

  • 我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放