![](/img/trans.png)
[英]Error while writing to event log, prevents windows service from starting?
[英]check for event log file full while sending email from windows service
我正在从Windows服务发送电子邮件。 当我将事件条目写入事件查看器时,它有时会抛出“事件日志文件已满”的错误。
如何检查它是否已满?
谢谢
您使用EventLog类的OverflowAction属性
更多信息: http : //msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.overflowaction.aspx
事件日志大小基于存储大小而不是条目数,因此很难确定事件日志是否已满。 例如,
bool logFull = false;
EventLog e = ... // get the needed event log
var sizeKB = e.MaximumKilobytes; // event log size
// Check current event log size
var regEntry = Rgistry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Services\\EventLog\\" + e.Log);
if (regEntry != null)
{
var filePath = regEntry.GetValue("File");
if (filePath != null)
{
var file = new FileInfo(filePath.ToString());
if (file.Exists)
{
var fileSize = (file.Length + 1023) / 1024;
logFull = (fileSize >= sizeKB); // a 1K margin
}
}
}
所以上面的代码使用1KB边距来决定日志文件是否已满。 因此,我建议您始终将事件条目包装在异常块中包装,以避免当前日志超出事件日志大小的罕见情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.