Helpex - Trao đổi & giúp đỡ Đăng nhập
122

Tôi muốn có các tệp được đặt tên cho ví dụ:

dd.mm.yyyy.log

Làm thế nào điều này có thể thực hiện được với log4net?

122 hữu ích 1 bình luận 141k xem chia sẻ
107

Trong tệp cấu hình Log4net của bạn, hãy sử dụng tham số sau với RollingFileAppender:

<param name="DatePattern" value="dd.MM.yyyy'.log'" />
107 hữu ích 3 bình luận chia sẻ
213
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <file value="logs\" />
  <datePattern value="dd.MM.yyyy'.log'" />
  <staticLogFileName value="false" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="5MB" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>
213 hữu ích 3 bình luận chia sẻ
32

Đối với RollingLogFileAppender, bạn cũng cần các yếu tố và giá trị sau:

<rollingStyle value="Date" />
<staticLogFileName value="false" />
32 hữu ích 3 bình luận chia sẻ
22

Sử dụng Log4Net 1.2.13, chúng tôi sử dụng cài đặt cấu hình sau để cho phép ngày giờ trong tên tệp.

<file type="log4net.Util.PatternString" value="E:/logname-%utcdate{yyyy-MM-dd}.txt" />

Cái nào sẽ cung cấp các tệp theo quy ước sau: logname-2015-04-17.txt

Với điều này, tốt nhất bạn nên có những thứ sau để đảm bảo bạn đang nắm giữ 1 nhật ký mỗi ngày.

<rollingStyle value="Date" />
<datePattern value="yyyyMMdd" />

Nếu kích thước của tệp là mối quan tâm, điều sau đây cho phép 500 tệp có kích thước 5MB cho đến một ngày mới sinh ra. CountDirection cho phép đánh số Tăng dần hoặc Giảm dần các tệp không còn hiện hành.

 <maxSizeRollBackups value="500" />
 <maximumFileSize value="5MB" />
 <rollingStyle value="Composite" />
 <datePattern value="yyyyMMdd" />
 <CountDirection value="1"/>
 <staticLogFileName value="true" />
22 hữu ích 0 bình luận chia sẻ
21

Tôi đã kết thúc bằng cách sử dụng (lưu ý tên tệp '.log' và các dấu ngoặc kép xung quanh 'myfilename_'):

  <rollingStyle value="Date" />
  <datePattern value="'myfilename_'yyyy-MM-dd"/>
  <preserveLogFileNameExtension value="true" />
  <staticLogFileName value="false" />
  <file type="log4net.Util.PatternString" value="c:\\Logs\\.log" />

Điều này mang lại cho tôi:

myfilename_2015-09-22.log
myfilename_2015-09-23.log
.
.
21 hữu ích 1 bình luận chia sẻ
15

Tôi đã thử tất cả các câu trả lời, nhưng luôn có một cái gì đó bị thiếu và không hoạt động như mong đợi đối với tôi.

Sau đó, tôi đã thử nghiệm một chút với các gợi ý được đưa ra trong mỗi câu trả lời và đã thành công với cài đặt sau:

<appender name="RollingActivityLog" type="log4net.Appender.RollingFileAppender">
  <file type="log4net.Util.PatternString" value="C:\temp\LOG4NET_Sample_Activity.log" />
  <appendToFile value="true" />
  <rollingStyle value="Date" />
  <staticLogFileName value="false" />
  <preserveLogFileNameExtension value="true" />
  <datePattern value="-yyyyMMdd" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level - %message%newline" />
  </layout>
</appender>

Vấn đề với các kết hợp thông số khác là tệp mới nhất không có mẫu thời gian hoặc mẫu thời gian được thêm vào .log20171215để tạo ra thời gian tệp mới (và một loại tệp mới ! ) Mỗi ​​ngày - hoặc cả hai vấn đề đều xuất hiện.

Bây giờ với cài đặt này, bạn sẽ nhận được các tệp như thế này:

LOG4NET_Sample_Activity-20171215.log

đó là những gì tôi muốn.


Tóm lại:

  • Không đặt mẫu ngày trong <file value=...thuộc tính, chỉ cần xác định nó trong datePattern.

  • Đảm bảo rằng bạn đã đặt thuộc tính preserveLogFileNameExtension giá trịtrue .

  • Đảm bảo rằng bạn đã đặt staticLogFileName giá trị thành false.

  • Đặt giá trịrollingStyle thuộc tính thành .Date

15 hữu ích 2 bình luận chia sẻ
6

Để giữ phần mở rộng tệp:

<log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="D:\\LogFolder\\%date{yyyyMM}\\SchT.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <maximumFileSize value="30MB" />
      <staticLogFileName value="true" />
      <preserveLogFileNameExtension value="true"/>
      <datePattern value="ddMMyyyy" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
  </log4net>
6 hữu ích 5 bình luận chia sẻ
0

Phần cấu hình mở rộng trong phản hồi trước với

 ...
 ...
 <rollingStyle value="Composite" />
 ...
 ...

công việc được liệt kê nhưng tôi không phải sử dụng

<staticLogFileName value="false" /> 

. Tôi nghĩ rằng RollingAppender phải (một cách hợp lý) bỏ qua cài đặt đó vì theo định nghĩa, tệp được xây dựng lại mỗi ngày khi ứng dụng khởi động lại / sử dụng lại. Có lẽ nó quan trọng đối với việc di chuyển ngay lập tức MỌI lần ứng dụng khởi động.

0 hữu ích 2 bình luận chia sẻ
0

Tôi đã chuyển cấu hình sang mã để có thể dễ dàng sửa đổi từ CI bằng cách sử dụng biến hệ thống. Tôi đã sử dụng mã này cho tên tệp và kết quả là 'Log_03-23-2020.log'

            log4net.Repository.ILoggerRepository repository = LogManager.GetRepository(Assembly.GetEntryAssembly());
            Hierarchy hierarchy = (Hierarchy)repository;
            PatternLayout patternLayout = new PatternLayout();
            patternLayout.ConversionPattern = "%date %level - %message%newline%exception";
            patternLayout.ActivateOptions();

            RollingFileAppender roller = new RollingFileAppender();
            roller.AppendToFile = true;
            roller.File = "Log_";
            roller.DatePattern = "MM-dd-yyyy'.log'";
            roller.Layout = patternLayout;
            roller.MaxFileSize = 1024*1024*10;
            roller.MaxSizeRollBackups = 10;
            roller.StaticLogFileName = false;
            roller.RollingStyle = RollingFileAppender.RollingMode.Composite;
            roller.ActivateOptions();
            hierarchy.Root.AddAppender(roller);

0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ c# logging log4net filenames , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading