2010-03-09 45 views
9

Làm cách nào để đăng nhập ngoại lệ bên trong bằng Log4NET?Ghi nhật ký ngoại lệ bằng cách sử dụng Log4Net

Đây là mô hình chuyển đổi hiện tại của tôi:

<conversionPattern value="%date [%appdomain] %-5level %logger [%property{NDC}] - %message%newline" /> 
+1

Chỉ cần lưu ý: http://logging.apache.org/log4net/release/sdk/log4net.NDC.html NDC không được dùng nữa . Tôi đã sử dụng thành công 'log4net.ThreadContext.Properties [" propertyName "]' thay thế. Mẫu chuyển đổi của bạn sẽ giống như mẫu '% property {propertyName}' tham chiếu: http: //logging.apache.org/log4net/release/sdk/log4net.NDC.html – ram

Trả lời

7

Console và file appenders tự động in các ngoại lệ. Ngoại lệ: thông điệp, dấu vết ngăn xếp và tất cả ngoại lệ bên trong (một lần nữa với dấu vết ngăn xếp) được ghi lại trên các dòng riêng biệt và không tuân theo mẫu chuyển đổi.

Tôi thậm chí không chắc chắn nếu bạn có thể cấu hình log4net không in nó.

Cập nhật: Có thể cấu hình appender để không in stacktrace: Log4Net - Logging out the Exception stacktrace only for certain files

+0

Hi Stefan, Bạn có thể chỉ cho tôi một nhập trong SDK xác nhận những gì bạn trả lời? – Raj

+0

Tôi không đọc ở đâu cả. Đây là những gì tôi thấy trong các tệp nhật ký của mình hoặc trên bảng điều khiển khi tôi sử dụng log4net. Ngoại lệ bên trong luôn được in. –

+1

Tôi không biết tại sao, nhưng tôi thấy trong tệp nhật ký của tôi chỉ là điều ngược lại - ngoại lệ bên trong không được ghi lại. – VikciaR

1

Sau khi một số googling nhanh chóng, tôi thấy ai đó có a similar problem. giải pháp Freddy Gómez là:

Bạn có thể thực hiện một Renderer (một lớp mà thực hiện giao diện IObjectRenderer) cho ngoại trừ của bạn và đưa thông tin mà bạn muốn về ngoại lệ. Sau đó, bạn chỉ cần thêm phần tử vào tệp cấu hình.

+0

Các giải pháp khác trong cùng một chuỗi tôi đã tham chiếu bao gồm phân tích cú pháp ngoại lệ và bao gồm thông tin bổ sung trong chính Thông báo.

9

% ngoại lệ

một hình thức định dạng của đối tượng ngoại lệ trong mục nhật ký, nếu mục chứa một ngoại lệ; cách khác, biểu hiện định dạng này cho biết thêm không có gì để ghi nhật ký

tham khảo: http://www.beefycode.com/post/Log4Net-Tutorial-pt-4-Layouts-and-Patterns.aspx

Tôi tin rằng ngoại trừ của bạn sẽ chứa các ngoại lệ bên trong:

Chỉnh sửa: sử dụng ILog.Error (phương pháp) thay vì ILog.ErrorFormat(). Theo documentation, ErrorFormat() không lấy đối tượng Ngoại lệ để bao gồm trong sự kiện nhật ký

+0

+1 để đề cập rằng ErrorFormat không có ngoại lệ. Đó là những gì tôi cần. –

-1

Chỉ cần quản lý để xác minh điều này trong mã nguồn cho Log4Net phiên bản 2.0 và tôi có thể thấy không có xem xét để ghi InnerException. Đó là giới hạn hiện tại của Log4Net (phiên bản 2) mà nó không hỗ trợ hiển thị InnerException ra khỏi hộp. Đó là lý do tại sao bạn sẽ bắt đầu sử dụng NLog vì nó đã xây dựng hỗ trợ cho hiển thị InnerException - link

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