2010-06-15 31 views
34

Tôi cần ứng dụng của mình để tạo tệp nhật ký mỗi lần chạy.log4net một tệp cho mỗi lần chạy

Định dạng ưa thích của tôi sẽ là App.log.yyyy-MM-dd_HH-mm-ss. Nếu đó là không thể, tôi muốn giải quyết cho App.log.yyyy-MM-dd.counter

Đây là hiện cấu hình appender tôi:

<appender name="File" type="log4net.Appender.RollingFileAppender"> 
    <file value="App.log"/> 
    <rollingStyle value="Date"/> 
    <datePattern value=".yyyy-MM-dd_HH-mm-ss"/> 
    <staticLogFileName value="false"/> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
</appender> 

Nhưng nó tạo ra một số ngẫu nhiên các tập tin dựa vào ngày giờ.

Trả lời

51

tôi cho rằng việc áp dụng nên tạo chỉ có một tập tin đăng nhập mỗi khi nó chạy, do đó bạn không cần một tập tin appender cán (mặc dù giải pháp của tôi sẽ áp dụng cho cán appenders tập tin cũng):

<appender name="FileAppender" type="log4net.Appender.FileAppender"> 
    <file type="log4net.Util.PatternString" value="c:\temp\App-%date{yyyy-MM-dd_HH-mm-ss}.log" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%2thread] %-5level - %message%newline" /> 
    </layout> 
</appender> 

(Rõ ràng, bạn có thể sử dụng khác bố trí của riêng bạn và cài đặt khác cho các tập tin appender.)

+2

Điều đó đã làm các trick. Tôi không biết về PatternString. Cảm ơn! –

+0

Sửa lỗi nếu tôi sai, nhưng điều này sẽ tạo ra số lượng tệp nhật ký không giới hạn, ở đâu khi rollingstyle = Khi giải pháp sẽ tự động xử lý việc xóa các tệp cũ. Tôi nghĩ rằng giải pháp đó tốt hơn. – habermanm

+0

Tôi đoán bạn đã đúng. Tôi không thể nhớ nếu "rollingstyle = once" là có thể khi tôi trả lời ... –

27

Cũng lưu ý rằng bạn có thể đặt phong cách cán của bạn như

rollingstyle="Once"

và nó sẽ tạo một tệp mới mỗi khi nó được chạy. Nếu staticLogFileName được thiết lập là true (ví dụ, logname.log) các bản ghi trước đó sẽ được thiết lập để logname.log.1, logname.log.2 vv

Số file lưu giữ trước khi ghi đè lâu đời nhất (ví dụ 10) có thể được kiểm soát bằng cách thiết lập

maxSizeRollBackups="10"

Edit: cấu hình của tôi, mà tạo ra một bản ghi datestamped mỗi thực hiện (trừ khi một tồn tại, trong trường hợp này nó theo quy tắc .1, trông như thế này:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="Logs\MyLog-%date{dd-MM-yyyy}.log" /> 
    <appendToFile value="false" />  
    <maxSizeRollBackups value="-1" /> <!--infinite--> 
    <staticLogFileName value="true" /> 
    <rollingStyle value="Once" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5level %date [%thread] %c{1} - %m%n" /> 
    </layout> 
</appender> 

Không chắc chắn 100% nếu tôi cần appendToFile="false" vì điều đó được thực hiện tự động khi bạn sử dụng , nhưng điều này làm cho nó rõ ràng hơn trong mọi trường hợp.

0

Nó ghi nhận từ apache trong tài liệu log4net tại địa chỉ:

https://logging.apache.org/log4net/release/config-examples.html

ctrl + f cho "mỗi chương trình thực hiện"

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="logfile.txt" /> 
    <appendToFile value="false" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="-1" /> 
    <maximumFileSize value="50GB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender> 
Các vấn đề liên quan