2012-08-23 31 views
5

Tôi muốn tạo ra file log tên với mẫu sau:Log4net tạo sai tên đăng nhập tập tin

SBRF_20120820.log 
SBRF_20120821.log 
SBRF_20120822.log 
SBRF_20120823.log 

Nói cách khác, tạo ra một tập tin mới cho mỗi ngày. Vì vậy, tôi tạo cấu hình sau để làm điều đó:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net"> 
     <file type="log4net.Util.PatternString" value="Logs/SBRF_%date{yyyyMMdd}.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %-5level - %message%newline" /> 
     </layout> 
    </appender> 
    <logger name="LogEmArquivo"> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
    </logger> 
</log4net> 

Khi tôi chạy chương trình, hôm nay ví dụ, tệp SBRF_20120823.log sẽ được tạo. Nhưng trong những ngày tiếp theo nhật ký giữ để viết trong file SBRF_20120823.log, và các tập tin được tạo ra là:

SBRF_20120823.log.2012-08-23 
SBRF_20120823.log.2012-08-24 
SBRF_20120823.log.2012-08-25 
SBRF_20120823.log.2012-08-26 

Và nếu tôi chạy chương trình ngày mai, các tập tin sẽ được tạo ra là:

SBRF_20120824.log.2012-08-24 
SBRF_20120824.log.2012-08-25 
SBRF_20120824.log.2012-08-26 
SBRF_20120824.log.2012-08-27 

Tại sao?

Trả lời

7

Bạn không đặt mẫu ngày tháng trong tệp < > - đó là phần tĩnh của tên tệp. Bạn cần phải đặt nó vào <datePattern>.

Ngoài ra, nếu bạn đang sử dụng log4net 1.2.11, bạn có thể sử dụng < bảo lưuLogFileNameExtension > cũng đặt datePattern trên tệp hiện tại.

Tôi nghĩ rằng đây là những gì bạn muốn cấu hình của bạn trông giống như:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender, log4net"> 
     <file type="log4net.Util.PatternString" value="Logs/SBRF_.log"/> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value="yyyyMMdd" /> 
     <preserveLogFileNameExtension value="true"/> 
     <staticLogFileName value="false" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date %-5level - %message%newline" /> 
     </layout> 
    </appender> 
    <logger name="LogEmArquivo"> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
    </logger> 

+0

+1. Tôi đã từng viết RollingFileAppender của riêng mình, nhưng bây giờ chuyển sang sử dụng log4net mới nhất với các cài đặt mới này. –

0

Xóa <rollingStyle value="Date" />.

+0

Tại sao? Và nếu tôi xóa thẻ này, nhật ký sẽ dừng lại để tạo tệp mới cho mỗi ngày, phải không? –

-1

Đừng nghĩ rằng bạn thay đổi hành vi này với RollingFileAppender, vì vậy bạn sẽ phải tạo ứng dụng của riêng bạn.

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