【问题标题】:Event log messages get overrriden by another event log事件日志消息被另一个事件日志覆盖
【发布时间】:2008-12-10 09:27:02
【问题描述】:

我为 asp.net 项目错误记录创建事件日志。我通过在 regedit 中添加一个键,然后添加一个子键来做到这一点。
有时,我创建了一个新的密钥和子密钥,而不是获得一个新的空事件日志,而是在事件查看器中看到它正在向我显示来自不同项目的日志。我无法找到关于何时发生这种情况的模式。
有没有人遇到过这样的问题?难道我做错了什么?

【问题讨论】:

    标签: asp.net event-log


    【解决方案1】:

    您可能希望使用 EventLog.CreateEventSource API 来执行此操作 - 它应该为您处理任何细节。

    快速阅读文档似乎表明检查了前 8 个字符的唯一性...也许这就是您的问题所在?

    编辑:从 Reflector,API 执行此操作...

    1. 检查无效字符(基于 Unicode 类别的“不可打印”,\、*、?)
    2. 检查创建的 reg 密钥是否为
    3. 检查源是否已注册
    4. 检查日志名称是否未保留(AppEvent、SecEvent、SysEvent)
    5. 检查具有相同开头 8 个字符的另一个日志
    6. 检查日志名称是否作为来源存在
    7. 创建日志子键
    8. 使用默认值初始化日志子项(MaxSize = 524288,AutoBackupLogFiles = 9. Retention = 604800,File = %SystemRoot%\System32\config\logName.Substring(0, 8) + ".evt")
    9. 如果操作系统不是 > Windows NT 5.x(Vista 或更高版本),则使用 logName 和源名称在 logkey 上创建一个多字符串值。或者,如果值存在,则将源名称附加到现有数组。
    10. 为源创建子项
    11. 使用默认值(EventMessageFile、ParameterMessageFile、CategoryMessageFile、CategoryCount)初始化源子键

    【讨论】:

    • 谢谢,但即使事件日志的名称完全不同,它也会发生......
    • 如果有任何您不知道的注册表项,或在创建事件日志时需要完成的其他内务处理,API 会执行此操作,因为您可能会省略关键步骤与您的手动过程。
    【解决方案2】:

    问题似乎在于我们已经创建了一个具有该名称的事件日志,即使我们删除了它,它也没有帮助。解决方案是创建一个具有不同名称的事件日志。

    【讨论】:

    • 如果您在此答案前 2.5 个月完成了 Mark Bracket 建议的操作,则会抛出一个异常说明这一点。我会对此投反对票,不是因为它不正确,而是因为您宁愿将自己的 - 迟到 - 答案标记为正确的答案,而不是同样可以帮助您解决问题的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多