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

STS未拾取log4j。要写入文件的xml nor log4j2.properties

卫嘉泽
2023-03-14

作为log4j2漏洞的一部分,我们正在迁移到log4j2.xml。但在应用程序启动期间,不会拾取新创建的log4j2。我已经执行了以下所有选项,但徒劳。

尝试的选项:

  1. 尝试添加和删除log4j-jcl依赖项。
  2. 删除了spring-boot-starter日志记录依赖项。
  3. 试着用log4j2.properties代替log4j2.xml.
  4. 在application.properties.中添加logging.config道具
  5. 尝试重命名RollingFile名称并有目的地提供不正确的AppenderRef ref以检查任何与bean相关的异常。但是应用程序已成功启动。这意味着log4j2.xml和log4j2.properties文件没有被拾取。

这是我的项目的细节。如果需要任何其他信息,请告诉我。

log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorinterval="30" status="info" strict="true">
    <Properties>
        <Property name="logPath">${sys:app.config.home}/logs</Property>
    </Properties>
    <Appenders>
         <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
            <PatternLayout>
                <pattern>TYPE=%level, DATE_TIME=%d, CLASS_NAME=%C, METHOD_NAME=%M, %msg%n</pattern>
            </PatternLayout>
        </Console>
        <RollingFile name="RollingFile" fileName="${logPath}/batch.log" filePattern="${logPath}/batch-%d{MM-dd-yyyy}-part%i.log.gz">
            <PatternLayout>
                <pattern>TYPE=%level, DATE_TIME=%d, CLASS_NAME=%C, METHOD_NAME=%M, %msg%n</pattern>
            </PatternLayout>
            <Policies>
                 <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="200 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="60"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info" additivity="true" includeLocation="true">
            <AppenderRef ref="RollingFile" />
            <AppenderRef ref="ConsoleAppender" />
        </Root>
    </Loggers>
</Configuration>

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.proj.ds</groupId>
    <artifactId>ProcessorBatch</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <name>ProcessorBatch</name>
    <description>ProcessorBatch project</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/>
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <log4j2.version>2.17.1</log4j2.version>
    </properties>
    <repositories>
        <repository>
            <id>MDM</id>
            <url>https://devnexus.tent.trt.proj.pri:8443/nexus/content/groups/public</url>
            <name>Proj Repo</name>
        </repository>
    </repositories> 
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>           
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-batch</artifactId>
        </dependency>               
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.8</version>
        </dependency>   
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.3</version>
        </dependency>   
        <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-infrastructure</artifactId>
            </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </dependency>   
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
        </dependency>       
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>               
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-jdk8</artifactId>
            <version>1.1.0.Final</version> 
        </dependency>       
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc7</artifactId>
            <version>12.1.0.1</version>
        </dependency>   
    </dependencies>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

application-context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                            http://www.springframework.org/schema/jdbc
                            http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
                            http://www.springframework.org/schema/util 
                            http://www.springframework.org/schema/util/spring-util-3.2.xsd
                            http://www.springframework.org/schema/context
                            http://www.springframework.org/schema/context/spring-context-3.2.xsd">
    

    <import resource="classpath:context/persistance-context.xml" />
    <import resource="classpath:context/memory-jobrepository.xml" />

    <context:component-scan base-package="com.proj.ds" />
    
    <util:properties id="configProperties" location="file:${app.config.home}/config/batchConfig.properties" />
    <context:property-placeholder location="file:${app.config.home}/config/batchConfig.properties" />
    
    <bean id="processorTasklet" class="com.proj.ds.mdm.processor.batch.tasklet.ProcessorTasklet">
        <property name="batchDao" ref="batchDao" />     
        <property name="processorService" ref="processorService" />
        <property name="threadCount" value="${batch.threadcount}" />
    </bean>

    <bean id="batchDao" class="com.proj.ds.mdm.processor.batch.dao.BatchDAOImpl">
        <property name="metaBatchMapper" ref="metaBatchMapper" />
        <property name="hubBatchMapper" ref="hubBatchMapper" />
    </bean>
    
    <bean id="processorService" class="com.proj.ds.mdm.processor.batch.service.ProcessorServiceImpl">
        <property name="projCompositeService" ref="projCompositeService" />
        <property name="endPointUrl" value="${mdm.endpoint}" />
    </bean>
        
    <bean id="projCompositeService" class="com.proj.mdm.projcomposite.port.projCompositeService">
        <property name="handlerResolver" ref="handlerResolver" />
    </bean>
    
    <bean id="handlerResolver" class="com.proj.ds.mdm.processor.batch.service.HeaderHandlerResolver"/>      

    <bean id="batchUtil" class="com.proj.ds.mdm.processor.batch.util.BatchUtil">
        <property name="configProperties" ref="configProperties" />     
    </bean>
    
</beans>

共有3个答案

裴楚青
2023-03-14

此外,由于Spring Boot Starter集成了Logback,请考虑从log4j迁移到Logback。https://logback.qos.ch/manual/introduction.html.

Logback是由log4j的创始人设计的。

这里有一个迁移工具:https://www.slf4j.org/migrator.html

司空学智
2023-03-14

您的Spring Boot项目继承自Spring Boot Starter父项目,该父项目依赖于SLF4J和logback。您可以将项目迁移到logback,也可以删除logback依赖项。

要删除回登录依赖项,请尝试更新POM文件:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
公西凯捷
2023-03-14

XML配置文件应该放在src/main/Resources文件夹下。

 类似资料:
  • 我试图使用log4j 2实现一些日志记录。控制台输出是可以的,但当我试图写一些日志到文件我不能管理它。 我的: 我的: 我使用log4j的方式如下: 我使用记录器的类在包下。 xml配置位于src/main/resources下。 日志文件夹与源文件夹处于同一级别。

  • 有没有人知道为什么这个日志没有写入文件。它将两次写入标准输出,但不写入文件: 此外,我尝试删除“stdout”附加器,但我没有得到任何日志记录。 log4j.rootlogger=debug,Stdout,mainAppender log4j.appender.stdout=org.apache.log4j.consoleappender log4j.appender.stdout.layout=

  • 我使用ubuntu 16.04。我想在有cassandra java api的程序中编写登录文件。日志可以写在java控制台中,但不能写在文件中。 我的节目: 还有我的log4j。属性:

  • 我正在将构建从Ant迁移到Maven。Ant构建用于编译“代码生成器”,执行这个“代码生成器”,它生成了一组Java和C代码。然后,它将生成的Java代码与其他一些代码一起编译,生成一个jar。 我已经在Maven中很容易地复制了这一点,当我从命令行运行时,它工作得很好,但Eclipse抱怨并给了我一个与pom文件相关的错误 无法在超文本传输协议中找到{group.id}:{artifact.id

  • 问题内容: 我有下面的代码 执行后,文件创建成功,但创建的文件为空 那么代码有什么问题呢? 问题答案: 您必须关闭,否则不会刷新当前缓冲区。您可以直接调用该方法。 如果要关闭文件,则无需使用该方法。该可用于例如,如果一会你的程序运行和输出文件中的东西,你想在其他地方检查。

  • 问题内容: 我想知道如何将以下代码转换为将这些行输出到文本文件,而不是标准输出: 该属性文件是: 谢谢。 问题答案: 将ConsoleAppender更改为FileAppender。 我发现 有用。如果使用此选项,则必须为fileName添加一个属性,并且可能还要设置maxFileSize。这是一个示例(将它们放在log4j.properties文件中): 还有其他附加程序。 根据时间滚动。 不滚