2011-01-14 45 views
9

Tôi đang sử dụng log4net để ghi lại các lỗi.sử dụng log4net mà không cần web.config

Hiện nay tôi tải về các tập tin log4net.dll, sau đó thực hiện thay đổi sau trong global.asax file:

private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 

protected void Application_Start(object sender, EventArgs e) 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
} 
protected void Application_Error(object sender, EventArgs e) 
{ 
    Log.Fatal("An uncaught exception occurred", this.Server.GetLastError()); 
} 

cũng những thay đổi này đã được thực hiện trong file web.config

<log4net> 

<appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
    <param name="File" value="c:\Log4NetExample.log"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/> 
    </layout> 
</appender> 

<root> 

    <level value="All"/> 

    <appender-ref ref="LogFileAppender"/> 
</root> 

tất cả mọi thứ hoạt động .. nhưng những gì tôi cần là di chuyển mã từ web.config và đọc mã từ tệp văn bản thay thế.

Ngoài ra tôi cần 2 cấp độ gỡ lỗi và lỗi ..

Có thể giúp tôi với điều này không?

Cảm ơn bạn

+0

http://geekswithblogs.net/bsherwin/archive/2008/02/15/119657.aspx – kenny

Trả lời

15

Đặt thuộc tính này trong tập tin AssemblyInfo.cs của bạn:

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

nơi 'Log4net.config' tương đương với tên của tập tin cấu hình của bạn.

Có tất nhiên, các cách khác để đạt được hiệu quả tương tự. Bạn có thể, ví dụ, để trình xử lý phần cấu hình được thiết lập trong web.config của bạn. Di chuyển các phần tử vào tập tin xml riêng của mình, và thay thế nó trong web.config với một phần tử rỗng, như sau:

<log4net configSource="c:\config\myLog4NetConfig.xml" /> 

Thuộc tính configSource cung cấp vị trí của tập tin bên ngoài (không thể là một đường dẫn UNC, mặc dù , nó phải là cục bộ cho máy.)

Theo như định cấu hình log4net ... có thể có một chút khôn lanh.Xem những liên kết này để được giúp đỡ và các ví dụ:

+1

Tôi thích có tập tin cấu hình log4net riêng của tôi bởi vì nó cũng cho phép bạn nhanh chóng thay đổi chế độ mà không cần tải lại lắp ráp, đó là những gì sẽ xảy ra nếu bạn cập nhật tệp web.config. –

+1

Đảm bảo Log4Net.config của bạn có cài đặt bản dựng là "Sao chép nếu mới hơn". Đặc biệt cho các dự án console. –

+0

Còn đường dẫn tương đối thì sao? Tôi có thể viết '' chẳng hạn? –

1

Tôi không biết nếu điều này là những gì bạn muốn, nhưng bạn có thể đặt các thông tin cấu hình tương tự log4net xml vào một file txt, đọc nó cho mình, và sau đó khởi log4net với chính xác xml đó.

Xem this question tại đây về SO để biết cách định cấu hình log4net bằng xml theo lập trình. Trong ví dụ này, tôi hiển thị để gửi xml trực tiếp đến log4net qua api log4net. Tất cả những gì còn thiếu trong trường hợp của bạn là đọc nó từ một tập tin văn bản. Tôi nghĩ rằng nếu bạn sao chép thông tin cấu hình log4net xml của bạn từ web.config và dán nó vào một tệp văn bản, bạn sẽ có thể đọc nó từ tệp và gửi nó tới log4net như trong ví dụ. Lưu ý rằng nếu bạn chỉ muốn cấu hình đăng nhập log4net của mình trong một tệp riêng biệt từ web.config, log4net cho phép bạn chỉ định một tệp riêng biệt chỉ chứa thông tin cấu hình log4net (và điều này sẽ là một điều tiêu chuẩn hơn để làm). hơn ví dụ của tôi ở trên).

Xem this question để biết ví dụ về cách thực hiện điều đó cho ứng dụng ASP.NET.

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