2011-06-29 28 views
6

Tôi muốn đăng nhập vào Trình xem sự kiện Windows bằng cách sử dụng log4net.
Tôi tạo ra một ứng dụng Console (.NET Framework 4), tôi đã thêm các log4net.dll tài liệu tham khảo, tôi đặt đoạn mã sau trong App.config của tôi:log4net không đăng nhập Windows Event Viewer

<configuration> 
<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 
</configSections> 

<log4net> 
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
    </layout> 
</appender> 
<root> 
    <level value="ALL"/> 
    <appender-ref ref="EventLogAppender"/> 
</root> 
</log4net> 

<startup><supportedRuntime version="v2.0.50727"/></startup> 
</configuration> 

Và tôi đặt đoạn mã sau:

class Program 
{ 
    static void Main(string[] args) 
    { 
     log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program)); 
     log.Error("test error", new Exception("error's exception", new Exception("error's innerexception"))); 

     Console.Read(); 
    } 
} 

Nó không đăng nhập, không có gì xảy ra, tại sao?

Cảm ơn

Trả lời

10

Bạn cần gọi configure.

Thay đổi:

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

Để

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

Khi bạn xác định ConfigFile = "App.config" đi của nó để tìm App.config nhưng tên tập tin của bạn sẽ được [FileName].Config.

+1

tôi dưới một quản trị viên tài khoản. Tôi đã cố chạy ứng dụng của mình với tư cách quản trị viên, cùng một vấn đề. Tôi đã cố gắng khởi động lại studio trực quan dưới dạng quản trị viên, cùng một kết quả. – Nico

+0

Bạn có câu lệnh cấu hình không? – Nix

+0

như thế này? [assembly: log4net.Config.XmlConfigurator (ConfigFile = "App.config", Watch = true)] tôi đã sử dụng App.config mặc định, tôi đã thử đặt nó trong AssemblyInfo.cs, cùng một kết quả. – Nico

5

Bạn cần gọi XmlConfigurator.Configure từ thư viện log4net để khởi tạo nó. (xem bên dưới)

class Program 
{ 
    static void Main(string[] args) 
    { 
     // you need this 
     XmlConfigurator.Configure(); 
     log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program)); 
     log.Error("test error", new Exception("error's exception", new Exception("error's innerexception"))); 

     Console.Read(); 
    } 
} 
0

Gọi XmlConfigurator.Cấu hình() khi bắt đầu ứng dụng của bạn.

Bạn cũng cần phải cấp cho người dùng quyền ứng dụng để đặt dữ liệu trong bảng sự kiện.

Cách tốt nhất để làm điều này là với PowerShell, chế độ quản trị

New-EventLog EventLogName -source ApplicationName 

Ngoài ra, thêm hai thông số này vào appender

<param name="LogName" value="EventLogName " /> 
    <param name="ApplicationName" value="ApplicationName" /> 

Kính trọng,

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