2011-04-18 24 views
6

Tôi có một lớp đang đăng nhập từ một phương thức ẩn danh. Tôi đã dumbed nó xuống để làm cho điểm ...Tôi có thể nhận log4net để nối thêm tên lớp thực và không phải tên lớp đóng được tạo không?

public class SocketFlusher 
{ 
    private static readonly ILog Log = LogManager.GetLogger(typeof(SocketFlusher)); 

    public void Flush() 
    { 
     Wait.For(timeout,() => 
     { 
      ... // work 
      Log.DebugFormat("{0} bytes available", socket.Available); 
     } 
    } 
} 

cấu hình log4net của tôi là tốt (Tôi đã kiểm tra đầu ra log4net debug="true" và appender không làm việc). Bố cục của ứng dụng của tôi là

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%-4thread] %-5level %class{1} - %message%newline"/> 
    </layout> 

Tuy nhiên, đầu ra nhật ký của tôi có lớp tĩnh được tạo tự động điên trong đó.

2011-03-21 18:10:20,053 [5 ] DEBUG SocketFlusher+<>c__DisplayClass1 - 82 bytes available 

Tôi muốn nó nói SocketFlusher, cách bố trí appender ngay để có được định dạng này là gì?

Trả lời

8

Bạn muốn tên lớp để xuất hiện trong đầu ra của trình bổ sung. Và bạn đang theo dõi các thành ngữ log4net đặt tên logger của bạn tên của lớp ...

private static readonly ILog Log = LogManager.GetLogger(typeof($CLASSNAME$)); 

Những gì bạn muốn làm trong cách bố trí hoa văn appender là bao gồm mô hình %logger tên thay vì mô hình %class.

<layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%-4thread] %-5level %logger{1} - %message%newline"/> 
</layout> 
Các vấn đề liên quan