Câu trả lời của tôi dựa trên logback
, không log4j
(xin lỗi vì sự nhầm lẫn ..)
Bạn có thể đạt được vòng quay nhật ký đó bằng cách sử dụng TimeBasedRollingPolicy
.
ví dụ)
<appender name="SYSTEMLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./logs/system.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>./logs/system.log.%d{yyyy-MM-dd}</fileNamePattern>
<!-- keep last 30 days of logs -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %msg %n</Pattern>
</encoder>
</appender>
Nó sẽ xoay vào nửa đêm và sẽ xóa các tệp nhật ký cũ hơn 30 ngày.
fileNamePotype: Thời gian cuộn qua được suy ra từ giá trị của fileNamePotype
maxHistory: Thuộc tính maxHistory tùy chọn kiểm soát số lượng tệp lưu trữ tối đa để giữ, xóa không đồng bộ các tệp cũ hơn. Ví dụ: nếu bạn chỉ định cuộn qua hàng tháng và đặt maxHistory thành 6, thì các tệp lưu trữ có giá trị 6 tháng sẽ được giữ với các tệp cũ hơn 6 tháng đã bị xóa. Lưu ý vì các tệp nhật ký lưu trữ cũ sẽ bị xóa, mọi thư mục được tạo cho mục đích lưu trữ tệp nhật ký sẽ bị xóa nếu thích hợp.
Bạn có thể kiểm tra thêm thông tin về TimeBasingRollingPolicy