首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Classpath:和Spring,log 4j

Classpath:和Spring,log 4j
EN

Stack Overflow用户
提问于 2011-04-11 08:55:56
回答 1查看 10.7K关注 0票数 0

亲爱的,我在尝试从spring开始初始化我的log4j配置时遇到了一个问题。

代码语言:javascript
复制
<bean id="log4jInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="staticMethod">
        <value>org.springframework.util.Log4jConfigurer.initLogging</value>
    </property>
    <property name="arguments">
                      <list>
            <value>classpath:/resources/META-INF/spring/log4j.xml</value>
                            </list>
    </property>
</bean>

java.io.FileNotFoundException:类路径资源/资源/META/spring/log4j.xml不能解析为URL,因为它不存在。

当我尝试放置一个断点并观察函数的值位置时

公共静态空(java.lang.String位置)抛出java.io.FileNotFoundException { /*编译代码*/ }

然后,我看到类路径:令牌没有被替换。

你有什么建议吗?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-11 09:01:44

classpath:/resources/META-INF/spring/log4j.xml

看来你在用maven。但是maven将将srcresources文件夹“混合”到一个文件夹中。因此,对于Maven项目,路径是:classpath:META-INF/spring/log4j.xml

classpath:后无斜杠

如果您在服务器上工作,您应该在Spring启动之前初始化日志框架,因为Spring本身将在启动时使用它来记录信息。

这样做的一种方法是在web.xml中添加这一行(在spring配置中不需要这样做)

代码语言:javascript
复制
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/classes/META-INF/log4j.xml</param-value>
</context-param>    
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

当我尝试放置断点并观察函数的值位置时,

代码语言:javascript
复制
public static void initLogging(java.lang.String location) throws java.io.FileNotFoundException { /* compiled code */ }

你真的确定吗?魔术是在行:URL url = ResourceUtils.getURL(resolvedLocation);所以resolvedLocation是您的字符串“classpath:META.”但是返回的URL是“转换”路径。

请注意,当重新源位置以getURL开头且找不到文件时,classpath:函数会抛出异常。因此,如果我指定一个不存在的文件,我将测试会发生什么情况。->如果没有出现异常,则classpath:中会出现拼写错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5618943

复制
相关文章

相似问题

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