2013-09-16 42 views
6

Tôi đang tìm kiếm một cách để đăng nhập thông điệp biểu cảm khi tôi bắt một ngoại lệ với NLog 2.0.1, một cái gì đó giống nhưluận NLog cho errorException nhắn

try { 
    .... 
} 
catch(Exception ex) { 
    logger.ErrorException("Error with query {0}", query, ex); 
} 

Nhưng NLog không hỗ trợ nó. hình thức khác đã xảy ra với tôi là

logger.ErrorException( String.Format("Error with query {0}", query)) , ex); 

hoặc

logger.Error("Error with query {0} {1} {2}", query, ex.Message, ex.StackTrace); 

hoặc

logger.Error("Error with query {0}", query); 
logger.ErrorException("", ex); 

hoặc

LogEventInfo ei = new LogEventInfo(LogLevel.Error, logger.Name, null, 
         "Error with query {0}", new object[] { query }, ex); 
logger.Log(ei); 

Nhưng không ai có vẻ đơn giản như vậy như các cuộc gọi đến logger.Error() Tại thời điểm này, tùy chọn đầu tiên là favority của tôi mặc dù định dạng một chuỗi rằng có lẽ sẽ không được sử dụng:

  • tùy chọn thứ hai không sử dụng các tùy chọn bố trí cho exceptions.
  • thứ ba tạo hai mục nhập trong nhật ký và có thể sẽ gây nhầm lẫn.
  • tùy chọn thứ tư ít rõ ràng hơn nhiều.

Còn một số thông tin khác?

+1

'String.Format (" Lỗi với truy vấn% s ", truy vấn)' Đây có phải là C#? –

+0

ups .. Tôi đã thực hiện với java. Đã chỉnh sửa – Narkha

+2

Tại sao không chỉ viết một phương pháp khuyến nông? –

Trả lời

3

Update,

Điều này có thể kể từ NLog 4,0

logger.Error(ex, "Error with query {0}", query); 

Xem news post - consistent logging of exceptions

+0

Tính năng tuyệt vời! Tôi không chấp nhận câu trả lời bởi vì nó đã được thực hiện cho NLog 2.0.1, nhưng tốt cho đến nay thư viện đã được cải thiện. – Narkha

+0

Chắc chắn, mặc dù tôi không thích câu hỏi chưa được trả lời – Julian