- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的 log4j2 配置存在问题,该配置几乎直接来自 https://www.baeldung.com/java-logging-rolling-file-appenders第 4.4 节:
<RollingFile name="roll-by-time-and-size"
fileName="target/log4j2/roll-by-time-and-size/app.log"
filePattern="target/log4j2/roll-by-time-and-size/app.%d{MM-dd-yyyy-HH-mm-ss.SSS}.%i.log.gz"
ignoreExceptions="false">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} %p %m%n</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="5 KB" />
<TimeBasedTriggeringPolicy interval="5000000" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="." maxDepth="2">
<IfFileName glob="target/log4j2/roll-by-time-and-size/app.*.log.gz" />
<IfLastModified age="20d" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
如果我减少间隔以确保它根据时间滚动,则会将正确的当前时间放入文件名中。但是,如果我将间隔增加到 5000 或其他值并让 SizeBasedTriggeringPolicy 命中,则时间戳始终相同,并且是文件末尾索引中唯一发生变化的内容。
这对我们来说是一个问题,因为我们有一个 cron 作业正在将滚动的文件移动到远程安装点。这意味着下次 log4j 达到基于大小的触发策略时,索引将重置为 1,文件名中的时间戳将相同,即使不应该如此(为什么?),并且我们的 cron 作业将尝试移动文件,但它将与已移动的另一个文件具有相同的文件名。
使用最新的 spring boot starter log4j2(截至目前)
这是一个错误还是预期的行为。作为一种预期行为没有多大意义,但如果是这样,我们应该做什么来解决这个问题?
最佳答案
这些策略似乎按照文档中所述起作用。我在 Spring Boot 2.2.6.RELEASE 应用程序上测试了它:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
然后我使用以下依赖项而不是启动器,以确保我使用的是最新版本:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.13.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.2</version>
</dependency>
在这两种情况下,仅当没有使用 TimeBased 触发策略时,SizeBased 触发策略才会更改文件名中的时间戳。
来自documentation :
When combined with a time based triggering policy the file pattern must contain a %i otherwise the target file will be overwritten on every rollover as the SizeBased Triggering Policy will not cause the timestamp value in the file name to change. When used without a time based triggering policy the SizeBased Triggering Policy will cause the timestamp value to change.
每次 TimeBasedTriggering 策略触发翻转时,都会创建一个名称中包含新时间戳的文件。下次命中 SizeBased 触发策略时,它将使用最新文件中的时间戳并仅更改 %i 部分。
由于您无法更改 SizeBasedTriggerin 策略确定索引的方式,唯一明显的解决方案似乎是更改 cron 作业以不移动具有最新时间戳和索引的文件。这应该足以解决您的问题。
关于java - 触发 SizeBasedTriggeringPolicy 时 Log4j Filepattern 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61214180/
我有一个包含通配符的 URL 列表,如何将其传递给 FileIO.match().filepattern(XXXX) 这是代码 PCollectionTuple decompressOut = p
我们的 log4j2 配置存在问题,该配置几乎直接来自 https://www.baeldung.com/java-logging-rolling-file-appenders第 4.4 节:
我正在尝试使用 log4j2(2.0.2) 和 10 个日志文件在 tomcat 7.0.23 中配置 RollingFile appender。 我在 filePattern 中使用 ${sys:c
我正在使用 log4j 2.0.2 进行日志记录。我正在尝试将 ContextMapLookup 用于 RollingFileAppender 的 fileName 和 filePattern 属性,
.js 和 .css 文件压缩的常见做法是创建 .min.js 和 .min.css 文件。问题是 Shake FilePatterns将使用类似 //*.js 的模式将缩小和非缩小文件与此方案匹
我是一名优秀的程序员,十分优秀!