2011-07-01 21 views
7

Tôi muốn viết stack trace chỉ khi tôi có trường hợp ngoại lệ, hiện nay tôi làm điều đó như thế nàyViết stack trace để đăng nhập tập tin chỉ khi ném ngoại lệ

layout="${longdate}|${level}|${message} ${exception:format=tostring} | ${stacktrace}" 

Vì vậy, tôi luôn nhận được nó trong tập tin đăng nhập của tôi.

EDIT:

tôi sử dụng bố trí này cho tất cả các đăng nhập của tôi, vì vậy khi tôi không có bất kỳ ngoại lệ Tôi cũng nhận được đống trace.But tôi cần nó chỉ khi tôi có một số ngoại lệ

khi tôi có một ngoại lệ tôi đã sau đầu ra, và nó là những gì tôi cần

2011-07-01 22:59:02.3782|Debug|fffffffffffffffffffffffffffff System.Exception: Exception of type 'System.Exception' was thrown. | AppDomain.ExecuteAssembly => AppDomain._nExecuteAssembly => Program.Main 

Nhưng không có ngoại lệ:

2011-07-01 22:57:26.7117|Trace|fffffffffffffffffffffffffffff | AppDomain.ExecuteAssembly => AppDomain._nExecuteAssembly => Program.Main 

Nhưng tôi muốn chỉ

2011-07-01 22:57:26.7117|Trace|fffffffffffffffffffffffffffff 

Cần ý tưởng làm thế nào để làm như vậy ...

+0

Bạn có mong đợi để có stack trace khác? –

+0

Bạn có thể làm rõ câu hỏi này không? Hãy cho chúng tôi một số bối cảnh? –

+0

@ Adrian, Đã thêm một ví dụ –

Trả lời

2

Có, trong NLog bạn có thể sử dụng cấp độ khác nhau Cảnh báo, Lỗi Thông tin vv Bạn cũng có thể ghi lại các trường hợp ngoại lệ với ErrorException, WarnException, InfoException. IE

logger.Error("This is an error message"); 

Nếu bạn muốn hiển thị ngoại lệ, hãy sử dụng như sau.

logger.ErrorException("This is an error with an Exception", e); 

Cập nhật:

<target name="Errors" xsi:type="File" fileName="${logDirectory}/ErrorLog.txt" layout="${longdate} ${message} ${exception:format=tostring}"/> 

Remove {} stacktrace

Cập nhật:

Exception e = new Exception(); 
e.StackTrace // <= The exception holds the stack trace 

Bạn sẽ nhận được stacktrace từ ngoại lệ.

+0

@Jetho, nhưng tôi không muốn nhận được dấu vết ngăn xếp khi tôi không có ngoại lệ –

+0

Nếu bạn sử dụng Lỗi, thay vì ErrorException bạn sẽ không nhận được dấu vết ngăn xếp Ngoại lệ. – Jethro

+0

Tôi vẫn nhìn nó: 2011-07-01 23: 29: 29.4367 | Debug | fffffffffffffffffffffffffffff | AppDomain.ExecuteAssembly => AppDomain._nExecuteAssembly => Program.Main –

13

bạn có thể sử dụng cách bố trí như sau:

${longdate}|${level}|${message} ${onexception:${exception:format=tostring} | ${stacktrace}} 
Các vấn đề liên quan