2008-10-20 37 views
26

Tôi cố gắng để sử dụng log4net trong một ứng dụng ASP.NET với Visual Studio 2005. Tôi đã tuyên bố một thể hiện của các logger như vậy:Tôi làm cách nào để định cấu hình log4net sao cho log.IsDebugEnabled là đúng?

Private Shared ReadOnly log As ILog = LogManager.GetLogger("") 

Tôi cố gắng để sử dụng nó theo cách sau đây:

If log.IsDebugEnabled Then 
    log.Debug("Integration Services Constructed") 
End If 

Dưới đây là cấu hình của tôi:

<log4net> 

    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="RollingFileAppender" /> 
    </root> 

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="..\\logs\\logfile.log"/> 
     <appendToFile value="true"/> 
     <rollingStyle value="Size"/> 
     <maxSizeRollBackups value="10"/> 
     <maximumFileSize value="1MB"/> 
     <staticLogFileName value="true"/> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
     </layout> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <param name="LevelMin" value="DEBUG" /> 
      <param name="LevelMax" value="FATAL" /> 
     </filter> 
    </appender> 

</log4net> 

Thật không may, log.IsDebugEnabled phải lúc nào cũng sai.
Tôi làm cách nào để định cấu hình log4net để tôi chỉ có thể ghi nhật ký các thông báo gỡ lỗi?

Trả lời

42

Trước khi gọi LogManager.GetLogger ("")

Bạn phải gọi log4net.Config.XmlConfigurator.Configure(); Trong một ứng dụng ASP.NET có thể bạn muốn đặt cuộc gọi này trong Application_Start

24

Vâng, làm điều đó như Anson nói. Ngoài ra, nếu bạn đang gọi Cấu hình trong một thư viện lớp học mà bạn có thể làm điều đó bằng cách thêm một thuộc tính cho lớp của bạn:

[assembly: XmlConfigurator(Watch = true)] 

và nếu bạn đang sử dụng log4net.config tập tin, sử dụng nó như thế thay vì:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 
8

Nếu bạn đang sử dụng một tập tin cấu hình riêng biệt cho log4net, làm như sau: sau khi làm theo tất cả các hướng dẫn thiết lập khác, hãy chắc chắn rằng u nhấp chuột phải vào tập tin trong dung dịch thu explorer hình ảnh, chọn Properties, mở rộng nhóm tùy chọn "Advanced" , đặt giá trị "Sao chép vào thư mục đầu ra" dưới dạng "Sao chép luôn". Điều đó sẽ làm điều kỳ diệu ... :) chúc mừng !!

0

Sử dụng tính năng này theo bất kỳ phương pháp nào trước khi bạn sử dụng nhật ký:

log4net.Config.XmlConfigurator.Configure();

Trong App.Config, các thiết lập nên là:

<root> 
     <level value="ALL" /> 
     <appender-ref ref="AppenderName" /> 
    </root> 
1

VB.NET -

<Assembly: log4net.Config.XmlConfigurator(Watch:=True)> 
2

Nếu bạn đang thiết log4net lên trong mã chứ không phải là trong một tập tin cấu hình, bạn có thể gọi log4net.Config.BasicConfigurator.Configure trước GetLogger.

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