Var*_*Raj 19 log4j spring-boot
如何在Spring启动中加载Custom Log4j.properties文件
我在application.properties中的代码就在这里
logging.file=E:/Apps_Tek/apps-webservices-log/apps-webservices.log
logging.level.*=INFO
logging.config=log4j.properties
Run Code Online (Sandbox Code Playgroud)
我在log4j.properties中的代码就在这里
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
Run Code Online (Sandbox Code Playgroud)
但是我没有得到任何预期的输出,即,spring boot没有加载log4j.properties文件.Spring启动有自己的默认日志记录.
log4j.properties文件在 src/main/resources
我的问题是如何将log4j.properties文件与application.properties中的logging.config属性映射,如果它位于src/main/resources中.
请提出所有必要的更改建议.
在此先感谢您的帮助.
Die*_*lli 41
如果您希望spring boot使用log4j而不是自己的默认日志记录(logback),那么您必须排除默认日志记录并在以下内容中包含spring boot引导的log4j依赖项pom.xml:
<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>
Run Code Online (Sandbox Code Playgroud)
这种方式将寻找你的log4j.properties文件src/main/resources.
此外,如果您希望使用log4j.properties文件中的application.properties中定义的属性
例如,您希望
log.file.path在您的中定义application.properties并使用它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>
Run Code Online (Sandbox Code Playgroud)
那样你就可以:
log4j.appender.file.File=${log.file.path}/${project.artifactId}.log
Run Code Online (Sandbox Code Playgroud)
在你的log4j.properties文件中
要排除默认日志记录并在 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-log4j2</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
如果您希望使用在 log4j.properties 文件中的 application.properties 中定义的 log4j 属性,则需要在 application.properties 文件中添加以下属性。
logging.config = src/main/resources/log4j2.properties
然后 spring boot 将从 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
Run Code Online (Sandbox Code Playgroud)
是否有任何其他工作不需要在 application.properties 文件中指定“logging.config = src/main/resources/log4j2.properties”?
注意:我使用的 Spring Boot 版本是 2.1.3.RELEASE
参考:https : //docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html
我的猜测是您的 pom.xml 文件未设置为包含正确的 log4j 依赖项。如果你这样做它应该会自动工作。请参阅spring-boot-sample-actuator-log4j中的示例。他们的项目包括工件 spring-boot-starter-log4j ,它应该允许从当前 src/main/resources 位置获取 log4j.properties ,并且您应该不再需要属性中的logging.*条目。您也可能需要排除他们的 spring-boot-starter-logging,因为我看到他们也在这样做。如果这似乎无法解决问题,请将您的 POM 文件发布到我可以看到的位置。请告诉我这是否适合您。
| 归档时间: |
|
| 查看次数: |
62569 次 |
| 最近记录: |