2012-05-04 28 views
5

Tôi đang sử dụng NLog trong một trong các dự án của mình và tôi đang cố gắng để có đầu ra của các tệp được nén. Tôi đã thử sử dụng thuộc tính tệp nén, nhưng khi tôi xem các tệp, chúng không bị nén.Cách nén các tệp nhật ký với NLog

Bạn có thể cho tôi biết tôi có thể làm gì sai không?

Đây là cấu hình của tôi:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

    <targets> 
     <target name="file" xsi:type="File" fileName="C:\Workspaces\log.xml" 
       layout="${message}" keepFileOpen="true" 
       archiveFileName = "C:\Workspaces\archived\log.{#####}.xml" 
       archiveAboveSize = "1048576" archiveNumbering = "Sequence" 
       fileAttributes="Compressed" concurrentWrites = "true"/> 
    </targets> 

    <rules> 
     <logger name ="*" minlevel="Debug" writeTo="file" /> 
    </rules> 
</nlo 

g>

+1

Nén tệp có được bật trên ổ đĩa không? Tạo một tệp bình thường với một số nội dung, tạo một bản sao và sau đó đánh dấu bản sao này là đã nén - so sánh kích thước tệp của cả hai. –

+0

Điều đó có vẻ giống như một giải pháp thông qua hệ điều hành, nhưng không phải là giải pháp tôi đang tìm kiếm. Ví dụ được đưa ra: Nếu tôi muốn chuyển tệp đó sang một hệ thống khác, nó sẽ vẫn được nén? – SysCoder

+0

có vẻ như là một lỗi được báo cáo, [bạn có thể nhận xét trong git-hub] (https://github.com/NLog/NLog/issues/244) để họ có thể ưu tiên hơn cho vấn đề này –

Trả lời

4

Với NLog 4 bạn có thể nén zip file (Net 4.5+). Xem the NLog 4.0 release post

Sử dụng enableArchiveFileCompression, ví dụ:

<target name="file" xsi:type="File" 
     layout="${longdate} ${logger} ${message}" 
     fileName="${basedir}/logs/logfile.txt" 
     archiveFileName="${basedir}/archives/log.{#}.txt" 
     archiveEvery="Day" 
     archiveNumbering="Rolling" 
     maxArchiveFiles="7" 
    enableArchiveFileCompression="true" /> 
Các vấn đề liên quan