我有用于日志“Log401”的源“Source401”。我需要将此源用于“Log402”日志并删除日志“Log401”。(如果我们可以将“Log401”重命名为“Log402”也可以。但这一切都需要以编程方式完成)
使用下面的代码,我得到以下异常。实现它的最佳方法是什么?
源 Source401 已存在于本地计算机上。
注意:当我删除旧日志时,它工作正常。但是事件没有被创建。
更新
来自MSDN
操作系统将事件日志存储为文件。当您使用 EventLogInstaller 或 CreateEventSource 创建新的事件日志时,相关文件存储在指定计算机上的 %SystemRoot%\System32\Config 目录中。文件名是通过在 Log 属性的前 8 个字符后附加“.evt”文件扩展名来设置的。
源在本地计算机上必须是唯一的;新的源名称不能与现有的源名称或现有的事件日志名称匹配。每个源一次只能写入一个事件日志;但是,您的应用程序可以使用多个源来写入多个事件日志。
代码
string source = "Source401";
string logName = "Log402";
string oldLogName = "Log401";
string eventName = "Sample Event";
string machineName = ".";
if (!EventLog.Exists(logName, machineName))
{
////Delete old log
//if (EventLog.Exists(oldLogName, machineName))
//{
// EventLog.Delete(oldLogName, machineName);
//}
//Create Source for the Log
EventLog.CreateEventSource(source, logName, machineName);
//Create Event
EventLog eventLog = new EventLog(logName, machineName, source);
eventLog.WriteEntry(eventName);
try
{
eventLog.WriteEntry(eventName, EventLogEntryType.Warning, 234, (short)3);
}
catch (Exception exception)
{
int x = 0;
}