Tôi đang sử dụng log4net trong dự án C#, trong môi trường sản xuất, tôi muốn vô hiệu hóa tất cả quá trình ghi nhật ký, nhưng khi xảy ra lỗi gây tử vong, hãy ghi nhật ký tất cả 512 thư trước đó vào file.I đã cấu hình thành công, và nó hoạt động tốt. Nó ghi lại các tin nhắn vào một tập tin khi một số lỗi nghiêm trọng xảy ra.Log4Net/C# - Tắt đăng nhập mặc định
Nhưng khi tôi chạy nó từ Visual Studio, tôi có thể thấy tất cả các thông điệp tường trình được ghi vào cửa sổ đầu ra, bất kể đó là một Tử vong hay không. (Tôi không thể nhìn thấy các thông báo này khi tôi chạy từ Windows Explorer - ứng dụng của tôi là một exe WinForm và không có cửa sổ Console để xem đầu ra)
Có cách nào để vô hiệu hóa quá trình ghi này không? Tôi chỉ cần các bản ghi của mình trong tệp, điều đó cũng xảy ra khi một số lỗi nghiêm trọng xảy ra.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net debug="false">
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" >
<bufferSize value="512" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="FATAL"/>
</evaluator>
<appender-ref ref="RollingFileAppender" />
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="BufferingForwardingAppender" />
</root>
</log4net>
</configuration>
Và đây là cách tôi định cấu hình trong trình khởi chạy tĩnh của Windows Forms.
static Window1()
{
Stream vStream = typeof(Window1).Assembly.GetManifestResourceStream("TestLogNet.log4net.config");
XmlConfigurator.Configure(vStream);
BasicConfigurator.Configure();
}
Và tôi có đối tượng logger khởi tạo trong constructor của WinForm
logger = LogManager.GetLogger(typeof(Window1));
[ngôn ngữ - C#, .NET Framework - 3.5, Visual Studio 2008, log4net 1.2.10, loại dự án - WinForms]
có quan trọng là mọi thứ đang được đưa ra bàn điều khiển không? chắc chắn vì không có giao diện điều khiển o ứng dụng winforms của bạn nó chỉ đăng nhập như bạn muốn nó? –
Điều này quan trọng đối với hiệu suất vì tất cả các cuộc gọi bàn điều khiển đều được đồng bộ hóa. Nếu bạn đã có một loạt các chủ đề nền thực hiện việc ghi nhật ký thì chúng sẽ bị ảnh hưởng nặng nề. –
+1 cho các chi tiết đầy đủ liên quan đến vấn đề (có quá nhiều câu hỏi có thể được nối lại để "trợ giúp, nó không hoạt động") – alexandrul