Lợi dụng để sử dụng "bộ ghi trên mỗi tệp" trong NLog: bạn có khả năng quản lý/lọc nhật ký theo không gian tên và tên lớp. Ví dụ:
<logger name="A.NameSpace.MyClass" minlevel="Debug" writeTo="ImportantLogs" />
<logger name="A.NameSpace.MyOtherClass" minlevel="Trace" writeTo="ImportantLogs" />
<logger name="StupidLibrary.*" minlevel="Error" writeTo="StupidLibraryLogs" />
<!-- Hide other messages from StupidLibrary -->
<logger name="StupidLibrary.*" final="true" />
<!-- Log all but hidden messages -->
<logger name="*" writeTo="AllLogs" />
NLogger có đoạn mã rất hữu ích để thực hiện việc này. Đoạn mã nlogger
sẽ tạo mã sau:
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
Vì vậy, chỉ có vài lần nhấn phím và bạn có bộ ghi mỗi lớp. Nó sẽ sử dụng không gian tên và tên lớp như tên của trình ghi nhật ký. Để đặt tên khác nhau để logger lớp học của bạn, bạn có thể sử dụng này:
private static NLog.Logger logger = NLog.LogManager.GetLogger("MyLib.MyName");
Và, như @JeremyWiebe nói, bạn không cần phải sử dụng thủ thuật để có được tên của lớp đó đang cố gắng ghi lại một thông điệp : Tên của trình ghi nhật ký (thường là tên của lớp) có thể dễ dàng được ghi vào tệp (hoặc mục tiêu khác) bằng cách sử dụng ${logger}
trong bố cục.
hmm. dường như có hai vấn đề ở đây - một là có một đối tượng log thực tế cho mỗi lớp, và một là có tên của bản ghi giống như lớp. –