如何在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 属性进行映射。
请建议所有必要的更改。
提前感谢您的任何帮助。
我的猜测是你的pom.xml文件没有设置为包含正确的log4j依赖项。如果你这样做,它应该会自动工作。请参阅Spring启动样品执行器-log4j中的示例。他们的项目包括工件Spring启动器-启动器-log4j,然后应该允许您的log4j.属性从当前的src /main/资源位置获取,并且您应该不再需要属性中的log.*条目。您也可能需要排除他们的Spring启动器日志记录,因为我看到他们也在这样做。如果这似乎没有解决它,请将您的POM文件发布在我可以看到它的位置。请让我知道这是否适合您。
要排除默认日志记录并在您的
<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
如果您希望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搜索之后),因