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

Spring-为什么不使用log4j2 XML配置文件?

纪鸿禧
2023-03-14

在我使用Log4j版本之前的时间。1在Spring应用。我用这样的东西来定义log4j的位置。属性配置文件驻留:

PropertyConfigurator.configure(Foo.class.getResourceAsStream("log4j.properties"));

现在我切换到Log4j ver.2,我有一个XML配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' >
    <appenders>    
        <appender name="DB" class="org.apache.log4j.jdbc.JDBCAppender">
            <param name="url" value="jdbc:postgresql://hostname/db"/>
            <param name="driver" value="org.postgresql.Driver"/>
            <param name="user" value="postgres"/>
            <param name="password" value="pwd"/>
            <param name="sql" value="INSERT INTO logs (logger, log_level, message) VALUES('%l','%p','%m')"/>
            <layout class="org.apache.log4j.PatternLayout"></layout>
        </appender>
        <appender name="CA" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
            </layout>
        </appender>
    </appenders> 
    <loggers>
        <root level="trace">
            <appender-ref ref="CA" level="debug"/>
            <appender-ref ref="DB" level="info"/>
        </root>
    </loggers>
</log4j:configuration>

但Spring似乎不使用此文件,并且日志记录并没有附加到控制台或数据库中。

public class Foo {

    Logger LOG = LogManager.getLogger(Foo.class);

    public void init() {

        System.out.println("START...");

        LOG.info("INFO");
        LOG.debug("DEBUG");

        System.out.println("END...");

    }
}

这是输出:

run:
VI 30, 2013 9:36:16 ODP. org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2548ccb8: startup date [Sun Jun 30 21:36:16 CEST 2013]; root of context hierarchy
VI 30, 2013 9:36:16 ODP. org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [foo/applicationContext.xml]
VI 30, 2013 9:36:16 ODP. org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@21e9c99c: defining beans [taskMaker]; root of factory hierarchy
START...
END...
BUILD SUCCESSFUL (total time: 1 second)

我做错了什么?

共有2个答案

蓝飞
2023-03-14

我正在使用gradle,发现logback/slf4j可传递依赖项正在妨碍我。要删除它们,我包括:

configurations {
    all*.exclude module: 'log4j-over-slf4j'
    all*.exclude group: 'ch.qos.logback'
}

在我的gradle构建文件中。

公冶谦
2023-03-14

您提供的配置XML使用log4j-1。x语法。Log4j-2.0配置文件不同。请查看网站上的示例。

接下来,log4j-2.0将查找log4j2。类路径中的xml。如果要指定位置,请使用系统属性启动进程

-Dlog4j.configurationFile=path/to/log4j2.xml
 类似资料:
  • 本文向大家介绍spring boot 核心配置文件是什么?相关面试题,主要包含被问及spring boot 核心配置文件是什么?时的应答技巧和注意事项,需要的朋友参考一下 配置文件有 . properties 格式和 . yml 格式,它们主要的区别是书法风格不同。 properties 配置如下: spring. RabbitMQ. port=5672 yml 配置如下: spring: Rab

  • 问题内容: Selenium WebDriver(又名Selenium 2)在哪里打开FirefoxDriver时会使用匿名配置文件?如果它使用Firefox的默认值%appdata%/ roaming / mozilla / firefox / profiles,那么如果我要禁用firefox插件,那么也应该对Selenium WebDriver禁用它,为什么不是呢? 问题答案: 我将回答它,并

  • 文件规定: 开发自动配置和使用条件 如果您在开发共享库的公司工作,或者如果您在开源或商业库工作,您可能希望开发自己的自动配置。自动配置类可以捆绑在外部罐中,并且仍然可以通过Spring Boot拾取。 如果我对其他所有内容都有注释(甚至是@自动配置后注释或@自动配置前注释), 为什么要维护一个属性文件来指向一个带有注释的类?

  • 本文向大家介绍.npmrc配置文件有什么用途?相关面试题,主要包含被问及.npmrc配置文件有什么用途?时的应答技巧和注意事项,需要的朋友参考一下 .npmrc文件的作用,就是配置npm源。 (该文件在C盘用户文件目录下) eg.淘宝源 registry = https://registry.npm.taobao.org

  • 问题内容: 在我的application.yml中,我得到了: 还有其他一些使用不同的配置文件。启动应用程序时,我得到以下信息: 如果我只是将log4j2.xml放在已分析的文件旁边,则它可以工作。所以我认为这是我错过依赖关系的原因,或者使用log4j2无法实现? 问题答案: 在我这边,我正在使用属性文件而不是Yaml文件。我需要两个日志文件:一个将所有内容记录到控制台,另一个用于记录文件。因此,

  • 我刚刚将我们的Spring Boot项目从引导升级到v2.6.2,从Spring Cloud升级到2021.0.0。 现在,我的远程配置获取没有任何效果,应用程序也无法获取正确的属性文件 [main]INFO o. s. c. c. c. ConfigServiceProperty tySourceLocator-从服务器获取配置:http://localhost:8080 [main]WARN