2009-09-18 26 views
16

Ví dụ, lần đầu tiên tôi chạy một ứng dụng (hoặc ngay sau khi tôi xóa thư mục/logs), tôi muốn log4j ghi nhật ký của ứng dụng vào một tệp có tên log.0. Sau đó, tôi thoát khỏi ứng dụng và khởi động lại nó, tôi muốn các bản ghi được ghi vào log.1. Và cứ thế.Có thể cấu hình log4j để tạo một tệp mới với mọi lần chạy ứng dụng không?

Tôi muốn giữ điều này trong tệp cấu hình, mặc dù nếu tôi không thể, tôi đoán tôi luôn có thể làm điều đó trong ứng dụng của mình, khi log4j được thiết lập.

Điều này có khả thi không? Nếu vậy, làm thế nào?

Trả lời

0

Tắt đầu tôi không nghĩ rằng điều này có thể xảy ra với Log4j. Có thể khi bạn tắt ứng dụng, bạn có thể đổi tên tệp .log để lần sau khi bạn khởi động một tệp nhật ký mới được tạo.

+0

Nếu đúng như vậy, tôi hơi thất vọng. log4j đáp ứng mọi nhu cầu của tôi và hoạt động tốt. Tôi chỉ muốn có thể nhóm nhật ký của mình bằng cách thực thi, thay vì theo ngày hoặc kích thước tệp. –

+0

Tôi đã từng viết một adapter bổ sung cho log4j (câu chuyện dài) mã nguồn thực sự dễ đọc và được ghi lại chắc chắn nó sẽ không mất nhiều thời gian để thực hiện tính năng này :-) – Karl

1

Xem hướng dẫn đăng nhập trên uniquely named files (by timestamp).

+2

Không phải câu trả lời này cho một khuôn khổ khác, không phải bản thân log4j? Ít nhất nó không hoạt động với log4j đối với tôi: ' log4j: WARN Lỗi phân tích liên tục 11 và cột 61 log4j: WARN Element type" dấu thời gian "phải được khai báo. log4j: WARN lỗi phân tích liên tục 18 và cột 16 log4j: WARN Nội dung của loại phần tử "appender" phải khớp với "(errorHandler?, Param *, layout?, Filter *, appender-ref *)". ´ – Henning

3

Giải pháp với log4j2:

 <RollingFile name="RollingFile" fileName="${log-path}/GScraper.log" 
       filePattern="${log-path}/GScraper_%d{yyyy-MM-dd}_%i.log"> 
     <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/> 
     <PatternLayout> 
      <pattern>%level\t%d{yyyy-MM-dd HH:mm:ss} %c: %m%n</pattern> 
     </PatternLayout> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" modulate="true"/> 
      <SizeBasedTriggeringPolicy size="32 MB" /> 
      <OnStartupTriggeringPolicy/> 
     </Policies> 
    </RollingFile> 

Note OnStartupTriggeringPolicy% i trong filePattern. Bằng cách này, Log4j sẽ tạo tệp nhật ký mới với chỉ mục mỗi khi bạn chạy ứng dụng.

Các vấn đề liên quan