问答

java – web.xml中的Log4j2.xml配置. IllegalArgumentException – uri不是绝对的

 来源    2019-04-02    1  

在为Log4j2添加context-param和Log4jConfigListener之前,我在catalina.out文件中列出了所有日志.

所以现在,我正在尝试为我的Web应用程序配置log4j.

在web.xml中,我添加了必要的配置.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_2_5.xsd">
    <display-name>etl-service</display-name>

    <!-- Support for Spring -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext.xml</param-value>
    </context-param>

    <context-param>
        <param-name>spring.profiles.active</param-name>
        <param-value>myprofile</param-value>
    </context-param>

    <context-param>
        <param-name>log4jConfiguration</param-name>
        <param-value>/WEB-INF/classes/log4j2.xml</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <listener>
        <listener-class>
            org.springframework.web.util.Log4jConfigListener
        </listener-class>
    </listener>

</web-app>

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace" strict="true" name="XMLConfigTest"
               packages="">         

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>

        <RollingRandomAccessFile name="RollingRandomAccessFileDebug" fileName="/local/deploy/logs/debug.log"
                                 filePattern="logs/$${date:yyyy-MM}/etl-%d{MM-dd-yyyy}-%i.log.gz"
                                 immediateFlush="false"
                                 append="false">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
            </Policies>
        </RollingRandomAccessFile>
        <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="/local/deploy/logs/info.log"
                                 filePattern="logs/$${date:yyyy-MM}/etl-%d{MM-dd-yyyy}-%i.log.gz"
                                 immediateFlush="false"
                                 append="false">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
            </Policies>
        </RollingRandomAccessFile>
        <!--<Async name="AsyncConsole">-->
        <!--<AppenderRef ref="Console"/>-->
        <!--</Async>-->
    </Appenders>
    <Loggers>
        <Root  level="TRACE">
            <AppenderRef ref="RollingRandomAccessFileDebug" level="DEBUG"/>
            <AppenderRef ref="RollingRandomAccessFile" level="INFO"/>
            <AppenderRef ref="Console"  level="TRACE"/>
        </Root>
    </Loggers>
</Configuration>

但是现在我有以下错误:

ERROR Unable to access WEB-INF/classes/log4j2.xml java.lang.IllegalArgumentException: URI is not absolute

也许某人已经面临过这样的问题.我也试过了
而是添加/WEB-INF/classes/log4j.xml使用classpath *:log4j.xml

并且有一个错误java.net.URISyntaxException:9索引处的模式名称中的非法字符:classpath *:log4j.xml

更新:
我们需要只添加描述符文件名,它可以工作.

<context-param>
            <param-name>log4jConfiguration</param-name>
            <param-value>log4j2.xml</param-value>
        </context-param>

但是发布了catalina.out文件中列出的remineds日志.不在我的log4j文件中.

你没有指定Spring版本和Servler版本..

从Spring 4.2.1开始,不推荐使用Log4jConfigListener.

假设您使用的是Spring版本4.2.1(),Servlet 3.0()和Log4j2.现在你所要做的就是:

>添加新依赖项log4j-web,
> a)将log4j2.xml文件放入WEB-INF文件夹或b)将log4j2配置放入类路径,并在web.xml中使用指定的配置文件定义log4jConfiguration上下文参数.

因此,您根本不必指定任何侦听器.

这是Log4j2’s documentation,它很好地描述了它.

java – 为什么Maven命令MVN声纳:声纳在我的POM.xml中没有任何插件配置?
问答我的回购中有一个Maven网站项目. 我是一个Maven noob,但是我仍然明白,我们需要配置的插件,我们可以运行插件特定的命令. 事实: 我有一台声纳服务器在9000端口的本地机器上运行. 我没有 ...
1
java – 如何注册Spring @Configuration注释类,而不是web.xml中的applicationContext.xml文件?
问答我在web应用程序中使用jsf和spring.我已经配置了数据源和会话工厂在一个配置类,使用@Configuration,@ComponentScan等注释.我没有任何applicationConte ...
1
java – 在Log4j2中,如何将XML Schema与log4j2.xml相关联?
问答我一直在给新的Log4j2一次.从documentation on migration起,XML Schema / DTD规范似乎已经完成了. 这似乎倒退了一步.当然可以将XML Schema或DTD ...
我们可以从web.xml中移动一些swagger配置吗?
问答在swagger 1.2.9-1.2.3或旧版本中我们有配置阅读器com.wordnik.swagger.jaxrs.ConfigReader类,我们可以扩展这个类,我们可以声明swagger属性sw ...
1
有没有办法为tomcat的web.xml中的所有错误代码配置一个自定义错误页面的使用情况?
问答正如在标题中所说,我想更改tomcat中的默认错误页面,并做了: <error-page> <error-code>500</error-code> <loc ...
java – 无法在我的Web项目中创建glassfish-web.xml(Glassfish / Netbeans)
问答我有一个使用Java EE 7和Glassfish 4.1的Java项目 当我向项目中添加一个新的Glassfish Descriptor时(通过右键单击菜单),它不能让我能够更改xml文件的名称.它 ...
java web开发中的奇葩事web.xml中context-param中的注释
日志同事提交了代码.结果除同事之外,其他人全部编译报错.报错说web.xml中配置的一个bean 没有定义.按照报错提示,各种找,无果. 由于代码全部都是提交到svn主干,之前也没有做过备份,只能一步一步 ...
Tomcat6和7版本对web.xml中taglib标签的配置差异
日志原来部署在Tomcat6中的应用在Tomcat7中运行时报错如下错误: java.lang.IllegalArgumentException: taglib definition not consis ...
1
java – 了解JPA中的Persistence.xml
问答我想了解以下事项: 当我创建EJB项目并将其部署到Glassfish时,我是否在Glassfish的管理员中心设置了JDBC资源/连接池,还是在persistence.xml中添加了用户名,密码等所有 ...
1
java – 在JFileChooser中仅打开.xml文件
问答我正在开发一个java应用程序,我只需要.xml文件.现在,只要用户想要保存文件或打开现有文件,我想在JFileChooser中只显示.xml文件. 这可能只显示.xml文件吗?::您可以使用JFil ...
1
java – 在TomEE中使用context.xml中的JDBC数据源
问答TomEE是一个很棒的项目,它结合了Tomcat的轻量级体验和Java EE功能.我在context.xml中声明了许多JDBC数据源,但是当我想通过JNDI使用该数据源时,我得到了一个异常.那么我如 ...
3
java – 属性文件中的Persistence.xml字段值
问答求助,我想将我的持久性xml属性值引用到我的db.properties文件中. 这是我的db.properties文件 jdbc.driver=com.mysql.jdbc.Driver jdbc.u ...
java – 为XStream中不在XML中的字段设置默认值
问答有没有办法创建转换器或在每次转换后执行的某些操作?对于上下文,我试图填充不在我的XML中的字段的默认值,以便在我的数据模型更改时保持向后兼容性.例如,如果我有这个对象: class A { priva ...
1
java – 客户端jar中的log4j.xml
问答我有一些jar文件将分发给使用log4j进行日志记录的客户端.我的问题是我应该在jar文件中包含log4j.xml配置还是让客户端提供一个如果他们想要记录? 我的感觉是将log4j.xml配置文件保留 ...
多模块Java/Maven项目中DBUnit的XML DTD路径?
问答我有一个多模块maven项目.在persist模块中,我有许多引用DTD的XML文件数据文件: <?xml version="1.0" encoding="UTF- ...
1
java – 在Android中使用Simple XML解析XML文件列表元素
问答我需要用SImple XML解析一个大的xml文件,(我真的想使用Simple XML).我使用XSD创建了对象,将它们从JAXB特定转换为特定于SimpleXML的对象. XML看起来像这样: &l ...
1
使用Java从apk中提取AndroidManifest.xml文件
问答有没有办法只使用Java检索androidmanifest.xml?我知道android-apktools但我无法安装应用程序.我需要将此限制仅限于Java和我指向的任何库.是否有一个具有这些功能的库 ...
1
java – 在ant中使用AndroidManifest.xml版本代码
问答有没有人知道是否有可能从AndroidManifest.xml获取变量用于ant使用? 具体来说,我试图以某种方式获取versionCode,versionName和packageName. 提前致谢 ...
1
Java Web Eclipse中配置Marven环境
日志1  Marven简介 Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信 ...
1