Tôi đã đăng nhập tất cả các giao dịch ứng dụng của mình bằng Log4net. Có cách nào tôi có thể vô hiệu hóa và cho phép đăng nhập từ một nơi phổ biến mà không làm thay đổi mã được viết để ghi nhật ký.Cách bật/tắt ghi nhật ký bằng Log4net
Trả lời
Tôi giả sử bạn muốn chuyển đổi đăng nhập trong ứng dụng đang chạy của mình thông qua mã. Tôi không thử nó nhưng tôi nghĩ rằng cách gọi phương thức sau đây nên vô hiệu hóa logging:
LogManager.GetRepository().ResetConfiguration();
Để kích hoạt lại đăng nhập bạn sẽ gọi
XmlConfigurator.Configure();
(hoặc một trong các phương pháp khác của XmlConfigurator
) .
Tuy nhiên, dường như có một số issue với phương pháp Configure
nhiều lần. Tôi không biết đây có phải là vấn đề cho bạn hay không, nhưng ít nhất tôi đã cảnh báo bạn ...
+1 Không giống như các phản hồi khác, tệp này đóng các tệp mà trình ghi nhật ký mở. –
Điều này đã giúp tôi ... – Pritam
Bạn có thể tắt chúng bằng cách thay đổi tệp cấu hình log4net. Cụ thể thay đổi cấp độ của trình ứng dụng hoặc cấp độ toàn cầu thành giá trị "TẮT". Xem here để biết chi tiết
Mức nhật ký được xác định trên trình ghi nhật ký chứ không phải trình phụ. Người gửi có thể sử dụng bộ lọc cấp. Nó cũng có thể là một logger gốc có mức OFF nhưng một logger con vẫn ghi lại một cái gì đó. –
Vâng, chắc chắn, nhưng ý tưởng vẫn làm cho nó thông qua một tập tin cấu hình, không phải mã. – Kamarey
Đủ công bằng. Đó là ấn tượng của tôi mặc dù đây không phải là những gì OP yêu cầu ... –
Giả sử tôi hiểu câu hỏi của bạn, từ các câu hỏi thường gặp: http://logging.apache.org/log4net/release/faq.html
Làm thế nào để hoàn toàn vô hiệu hóa tất cả các đăng nhập trong thời gian chạy?
Đặt ngưỡng trên thứ bậc thành cấp bậc sẽ tắt tất cả ghi nhật ký từ cấu trúc phân cấp đó. Điều này có thể được thực hiện trong tệp cấu hình log4net bằng cách đặt thuộc tính "ngưỡng" trên phần tử cấu hình log4net thành "OFF". Ví dụ:
Bạn có ý giống như trong app.config không? – Mark
thông qua web.config – saknet