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

Log4j.properties在Spring启动

曾嘉祯
2023-03-14

如何在Spring启动中加载自定义Log4j.properties文件

我的代码在应用程序中。属性在这里

logging.file=E:/Apps_Tek/apps-webservices-log/apps-webservices.log
logging.level.*=INFO
logging.config=log4j.properties

我在log4j.属性中的代码在这里

log4j.rootLogger=INFO,ConsoleAppender,FileAppender

log4j.appender.ConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.ConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ConsoleAppender.layout.ConversionPattern=%-7p %d [%t] %c [%X{userName}] [%X{accessToken}] - %m%n

log4j.appender.FileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FileAppender.File=E:/Apps_Tek/apps-webservices-log/apps-webservices.log
log4j.appender.FileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileAppender.layout.ConversionPattern=%-7p %d [%t] %c [%X{userName}] [%X{accessToken}] - %m%n

但是我没有得到任何预期的输出,即,Spring启动没有加载log4j.properties文件。Spring启动有自己的默认日志记录。

log4j。属性文件位于src/main/resources

我的问题是,如果 log4j.properties 文件位于 src/主/资源中,则如何在应用程序属性中将 log4j.properties 属性与日志记录.config 属性进行映射。

请建议所有必要的更改。

提前感谢您的任何帮助。

共有3个答案

马晓博
2023-03-14

我的猜测是你的pom.xml文件没有设置为包含正确的log4j依赖项。如果你这样做,它应该会自动工作。请参阅Spring启动样品执行器-log4j中的示例。他们的项目包括工件Spring启动器-启动器-log4j,然后应该允许您的log4j.属性从当前的src /main/资源位置获取,并且您应该不再需要属性中的log.*条目。您也可能需要排除他们的Spring启动器日志记录,因为我看到他们也在这样做。如果这似乎没有解决它,请将您的POM文件发布在我可以看到它的位置。请让我知道这是否适合您。

弘伟彦
2023-03-14

要排除默认日志记录并在您的

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</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>

如果您希望使用在您的application.properties文件中定义的log4j属性,log4j.properties文件中的属性需要在application.properties文件中添加以下属性。

登录中。config=src/main/resources/log4j2.properties

然后Spring启动将从log4j2.properties文件中读取属性

在log4j2.properties文件中,添加以下属性:

name=PropertiesConfig
appenders = console, file

appender.console.type = Console
appender.console.name = ConsoleAppender
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{MM:dd HH:mm:ss.SSS} [%t] [%level] [%logger{36}] - %msg%n

appender.file.type = File
appender.file.name = FileAppender
appender.file.fileName=/home/ubuntu/application.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern= %d{MM:dd HH:mm:ss.SSS} [%t] [%level] [%logger{36}] - %msg%n

loggers=file
logger.file.name=com.project
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = FileAppender

rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = ConsoleAppender

是否有任何其他工作不需要在文件中指定logging.config=src/main/Resources/log4j2.propertiesapplication.properties?

注意:我使用的Spring Boot版本2.1.3.RELEASE

参考:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html

宋和颂
2023-03-14

如果您希望spring boot使用log4j而不是它自己的默认日志记录(logback),那么您必须排除默认日志记录,并在< code>pom.xml中包含spring boot的log4j依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</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-log4j</artifactId>
</dependency>   

这种方式将查找位于< code>src/main/resources中的log4j.properties文件。

此外,如果您希望在log4j.properties文件中使用application.properties中定义的属性

例如,您希望在application.properties中定义log.file.path,并将其用于log4j.properties

然后,您必须在pom内部定义过滤.xml:

<filters>
    <filter>src/main/resources/application.properties</filter>
</filters>
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>log4j.properties</include>
        </includes>         
        <filtering>true</filtering>
    </resource>
</resources>

这样,您可以:

log4j.appender.file.File=${log.file.path}/${project.artifactId}.log

log4j.属性文件中

 类似资料:
  • 问题内容: 我的Java应用程序引用了一个使用log4j日志记录的第三方jar文件。问题是该jar包含自己的log4j.properties文件,这会导致我的机器上的访问被拒绝的异常,但是我无法控制jar文件来更改其内容。 我尝试在应用程序的类路径中添加自己的log4j.properties文件,但似乎没有效果。如果我尝试使用PropertyConfigurator以编程方式导入自己的设置,则lo

  • 在中开发一个Spring Boot应用程序。 我在堆栈中引用了以下链接 1.记录器在Spring Boot 1.5.7中不使用log4j.properties打印 2.spring boot日志记录中log4.properties文件不工作 日志文件 我是否错过了配置?

  • 问题内容: 我在服务器的类路径中有一个jar,在jar的根目录中包含log4j.properties文件,用于记录代码。当jar中的代码运行时,不会记录该代码。当我使用 java -Dlog4j.debug 选项分析问题时,我知道log4j正在加载 axis-ant.jar 的log4j.properties文件(这也在我的类路径中),并使用它而不是jar的属性文件。 当我随后从类路径中删除axi

  • 我正在使用一个Maven多模块,其中一场战争取决于另一场战争。 Spring Boot webapp依赖于只提供html文件的基本webapp。 当我运行SpringBoot应用程序时,我能够从主webapp(SpringBoot应用程序)访问服务和html,但是我不能从DependencyWar(404)访问html文件。但是这些html文件在SpringBootWebApp战争中得到了很好的打

  • 我正在学习在springboot中使用solr,我在一本书中尝试了该程序,spring-boot-starter-parent版本是2.1.2。在书中发布: 而我的sping-boot-starter-父版本是2.6.4: 我在pom中添加了solr依赖项。xml格式如下: 但是pom.xml显示错误:版本不能为空,所以我去https://mvnrepository.com/,发现最新的sping

  • 问题内容: 我使用netfishs 6.7.1和glassfish v2.1编写了一个Web服务项目,将log4j.properties放入项目的根目录并使用: 在构造函数中: 在功能上: 但是,这是错误信息(实际上,我已经尝试将它几乎可以实现的每个目录都放入): 问题答案: 我知道回答这个问题有点晚了,也许您已经找到了解决方案,但是我将发布我找到的解决方案(在我进行大量Google搜索之后),因