Tôi đang viết một tiện ích chuyển đổi tệp nhỏ. Các tệp được chuyển đổi tự động khi chúng được đưa vào một thư mục.Thêm/xóa tệp nhật ký trong khi chạy trong NLog
Tôi đang sử dụng NLog để đăng nhập. Bên cạnh tệp nhật ký trung tâm được cấu hình bằng cách sử dụng NLog.conf (và nhận tất cả thư được tạo), tôi muốn tạo một tệp nhật ký bổ sung cho mỗi tệp đầu vào, có tên tương tự và chứa tất cả các thông điệp tường trình được viết trong Quá trình chuyển đổi.
Rất tiếc, dường như tôi không thể tìm hiểu cách thêm đúng mục tiêu tệp mới cùng với quy tắc thích hợp trong thời gian chạy. Tôi muốn tất cả các đối tượng Logger
ghi vào tệp nhật ký mới trong quá trình chuyển đổi.
tôi đã cố gắng một cái gì đó giống như
var logfile = new NLog.Targets.FileTarget();
logfile.FileName = fileName + ".log";
logfile.KeepFileOpen = true;
logfile.Initialize();
var rule = new NLog.Config.LoggingRule("*", logfile);
NLog.LogManager.Configuration.LoggingRules.Add(rule);
NLog.LogManager.ReconfigExistingLoggers();
//
// Proceed with converting file
//
logfile.Flush();
NLog.LogManager.Configuration.LoggingRules.Remove(rule);
NLog.LogManager.ReconfigExistingLoggers();
Nhưng không có tập tin log được tạo ra.
Tôi đã làm gì sai? Bất kỳ ý tưởng?
Các phù hợp với phân công lại là rất quan trọng: LogManager.Configuration = cấu hình; – habakuk
Để làm rõ ** Dòng có gán lại là rất quan trọng: LogManager.Configuration = config; ** Điều này đúng vì cách NLog viết getters và setters cho thuộc tính Configuration. Nó không đẹp, nhưng nó phải được đặt lại với một đối tượng đã thay đổi; bạn không thể thay đổi trực tiếp tài sản. – zshift
Tôi phải gán lại biến logger ở cuối để làm việc này: logger = LogManager.GetCurrentClassLogger(); – Henry