我正在使用 Powershell PSeventing 插件,但到目前为止还没有找到在事件日志已满时触发的事件。我到处寻找 MSDN .net 事件,我知道它与最大事件日志大小有关,但我找不到那个触发器,我不知道如何让 PSeventing 让事情发生。谁能帮我。预先感谢。
5 回答
我的第一个想法是使用 FileSystemWatcher 并监视文件大小。除了监视系统事件日志之外,我没有找到任何其他选项(我认为当日志已满并且尝试写入失败时会在此处写入事件),但如果您关心的日志将不起作用是系统事件日志。
当应用程序或系统事件日志被视为“已满”(根据配置的 OverflowAction)时,会在应用程序或系统事件日志中发生特定事件:
http://www.eventid.net/display.asp?eventid=6000&eventno=291&source=EventLog&phase=1
您应该特别使用 WmiEventWatcher 来监视此事件(eventid 6000,错误)的事件,就像您监视任何其他事件一样。
-Oisin(pseventing 的作者)
感谢 Oisin 事件,但我现在正在研究在日志已满时在 Powershell 中捕获异常,然后再覆盖。我认为异常被称为“日志已满”,但我不确定,我对 Trap and Throw 了解不多,据说它的文档记录很差,但我正在追踪。
我想知道是否有可以注册接收器的关联 WMI 事件。如果我有时间我会找一个。
好的,这就是我到目前为止所发现的。有一个可用的 __EventQueueOverflowEvent 事件接收器。我怀疑这可能对你有用。还有可能有用的 __SystemEvent。
One way is to use Microsoft System Center or MOM to monitor for event ID 523. I believe a patch needs to be applied to the servers that will register a full log event. Check the Microsoft Web Site. Ours triggers at 90%, I believe you can set the percentage where you want it to trigger.
You can also probably do this with WMI or Powershell, but it would have to be run frequently to catch changes. A simple DIR for the event log will give you the size, if you know the upper limit you can calculate the % full. This could be automated in VB or C#.