Có - bạn có thể nhận thông tin chồng này sử dụng các mẫu sau trong một bố cục mẫu:
%type %file %line %method %location %class
Xem tài liệu this trên PatternLayout để biết thêm thông tin.
Chỉnh sửa để đáp ứng với bình luận của Ian dưới đây: tôi không nghĩ log4net có thể được cấu hình để viết ra toàn bộ stack.
Bạn luôn có thể tự viết lại cho chính mình, sử dụng một cái gì đó như new StackTrace().ToString()
, nhưng tôi đoán lý do bạn hỏi là bạn muốn cấu hình này trong cấu hình ghi nhật ký.
Tôi sẽ có cái nhìn sâu sắc hơn, nhưng cảm giác ruột của tôi không có cách nào để định cấu hình điều này và bạn sẽ phải triển khai lớp Bố cục của riêng mình.
Chỉnh sửa ++ OK - đây là lớp bố cục mẫu tùy chỉnh xuất phát từ PatternLayout
nhưng thêm vào bố cục% ngăn xếp.
Mã này hơi thô - chỉ minh họa - không phải sản xuất đã sẵn sàng! (Ví dụ, bạn có thể không có sự cho phép an ninh để truy cập stack bạn đang cố gắng in)
public class CustomPatternLayout : PatternLayout
{
public CustomPatternLayout()
{
this.AddConverter("stack", typeof(StackTraceConverter));
}
}
public class StackTraceConverter : PatternLayoutConverter
{
protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
{
var stack = new StackTrace();
var frames = stack.GetFrames();
for (var i = 0; i < frames.Length; i++)
{
var frame = frames[i];
// if the stack frame corresponds to still being inside the log4net assembly, skip it.
if (frame.GetMethod().DeclaringType.Assembly != typeof(LogManager).Assembly)
{
writer.WriteLine("{0}.{1} line {2}",
frame.GetMethod().DeclaringType.FullName,
frame.GetMethod().Name,
frame.GetFileLineNumber());
}
}
}
}
Sau đó bạn có thể cấu hình này với cấu hình mẫu sau (lưu ý% chồng ở phần cuối của layout):
<layout type="ScratchPad.CustomPatternLayout,ScratchPad">
<conversionPattern value="%date %-5level %message%newline %type %file %line %method %location %class %stack" />
</layout>
Nguồn
2009-12-15 09:45:18
Không phải là phương pháp Log4net Lỗi (chuỗi, ngoại lệ) đủ cho điều này? – CodeMonkeyKing
@CodeMonkeyKing - Tôi nghĩ rằng OP đang nói rằng anh ta muốn ghi lại dấu vết ngăn xếp trong một số tình huống mà anh ta không có ngoại lệ. –