添加<代码>时,我遇到了一个问题
因此,每当我从IDE或通过可执行的jar文件运行特定于配置文件的项目时,我都会创建两个日志文件,一个在当前工作目录,另一个在应用程序.properties文件中提到的指定文件路径位置。
我有三个基于三个不同环境的配置文件,即本地,开发和生产。
对于本地,我使用的是spring OOTB application . properties文件。
spring.profiles.active=local
server.port=8080
#logging
logging.level.root=info
logging.level.com.myApp=trace
logging.file.path=C:/Spring/logs
logging.file.name=app-Log
logging.config=classpath:logback-spring.xml
对于dev和prod,我分别使用application-dev.properties和application-prod.properties。
应用程序开发属性
spring.profiles.active=dev
server.port=9090
#logging
logging.level.root=info
logging.level.com.myApp=trace
logging.file.path=C:/Spring/logs/dev
logging.file.name=app-Log
logging.config=classpath:logback-spring.xml
这是我的logback-spring.xml。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include
resource="org/springframework/boot/logging/logback/base.xml" />
<springProfile name="prod">
<property resource="application-prod.properties" />
<appender name="SAVE-TO-FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logging.file.path}/${logging.file.name}.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{dd-MM-yyyy HH:mm:ss.SSS} %X{host} %X{port} [%thread] %X{clientapp} %-5level %-40.40logger{39} : %msg%n
</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${logging.file.path}/${logging.file.name}_%d{dd-MM-yyyy}.log
</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="SAVE-TO-FILE" />
</root>
</springProfile>
<springProfile name="uat">
<property resource="application-uat.properties" />
<appender name="SAVE-TO-FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logging.file.path}/${logging.file.name}.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{dd-MM-yyyy HH:mm:ss.SSS} %X{host} %X{port} [%thread] %-5level %-40.40logger{39} : %msg%n
</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${logging.file.path}/${logging.file.name}_%d{dd-MM-yyyy}.log
</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="SAVE-TO-FILE" />
</root>
</springProfile>
<springProfile name="local">
<property resource="application.properties" />
<appender name="SAVE-TO-FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logging.file.path}/${logging.file.name}.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{dd-MM-yyyy HH:mm:ss.SSS} %X{host} %X{port} [%thread] %-5level %-40.40logger{39} : %msg%n
</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${logging.file.path}/${logging.file.name}_%d{dd-MM-yyyy}.log
</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="SAVE-TO-FILE" />
</root>
</springProfile>
</configuration>
所以过了很久我才知道额外的日志文件是因为application.properties文件中的属性而创建的。
spring使用下面的属性创建了一个文件,我在logback-spring.xml中提到了文件名和文件路径。
logging.file.name=app-Log
因此,每当我运行应用程序spring时,请参阅上面的属性,并在当前工作目录中创建文件,并在logback-spring的指定位置创建另一个文件.xml文件。
${logging.file.path}/${logging.file.name}.log
因此,如果您要提及文件名和路径,请不要使用保留字。我知道这是一个非常愚蠢的错误,但如果它对任何人有帮助,那么这不会是徒劳的。
我最近升级到了log4j2,发现当java进程启动并初始化log4j上下文时,log4j为我的所有滚动文件追加器创建了空日志文件。因此,即使我的一些作业线程没有运行,它们也会为相关appender创建空日志文件。 有没有办法将日志文件的创建推迟到触发第一个LogEvent的时间? 附言-我见过如何让log4j仅按需创建日志文件?但它没有多大帮助。
问题内容: 我当前正在创建一个可以包含模块的系统(将它们视为插件),其中每个模块可以拥有自己的专用日志。 我想使用log4j2项目进行日志记录,但是文件附加器似乎有些麻烦。 主项目(整个模块的模块加载器和“核心”)应具有自己的日志文件,而模块应具有自己的日志文件(如)。 通过阅读有关追加程序的文档,我发现了该类,并且我将使用它。直到我发现不能简单地将追加器添加到由创建的默认记录器中。 LogMan
我目前正在创建一个系统,可以有模块(把它们看作插件),其中每一个都可以有自己的日志,专用的。 我想使用log4j2项目进行日志记录,但我似乎在文件附加符方面遇到了一些麻烦。 主项目(模块加载器和整个事情的“核心”)应该有自己的日志文件,而模块应该有自己的日志文件(像)。 即使搜索也没有给我提供任何接近的解决方案,我找到的只是xml配置中预定义的文件日志--这不是我想要的。 感谢你的阅读;即使是最轻
我想创建单独的日志文件,一个用于信息,另一个用于调试,我正在使用下面的log4j.property文件,请建议如何修改不同文件中的两级日志记录, 我想请求请发送我更新的属性文件而不是给我搜索或探索的指针,因为我已经花了3-4个小时在Google和StackOverflow上搜索这个解决方案, 提前道谢。
问题内容: 我不知道如何配置我的log4j,以便我的debugLog和reportLog彼此分开(不是附加的)。为什么在以下配置中,reportsLog始终为空? 这是我的Java代码: 问题答案: 尝试以下配置: 然后相应地用Java代码配置记录器: 你要输出到吗?如果不是,请将第一行更改为: 并摆脱界限。
大家好,我的社区, 我正在编写一个多线程应用程序,其中需要使用log4j为每个线程输出一个日志文件。理想情况下,我希望为每个线程运行一个单独的日志实例。我正在辩论我应该如何处理这个问题。因为每个日志实例的文件输出位置不同,所以我需要更新每个实例的属性。现在,我正在尝试创建一个新的记录器,将新属性设置到属性对象中,并使用