如何让PowerShell在溢出时获取日志文件?

时间:2008-11-18 00:31:17

标签: .net events powershell event-log

我正在使用Powershell PSeventing插件,但到目前为止找不到事件日志已满时触发的事件。我正在寻找MSDN .net事件我知道它与最大事件日志大小有关,但我找不到触发器,我不知道如何让PSeventing让事情发生。谁能帮我。提前谢谢。

5 个答案:

答案 0 :(得分:1)

我的第一个想法是使用FileSystemWatcher并监控文件大小。我没有找到任何其他选项,除了监视系统事件日志(我认为当日志已满并且尝试写入失败时会在那里写入事件),但如果您关注的日志不起作用是系统事件日志。

答案 1 :(得分:1)

当应用程序或系统事件日志被视为“已满”时(根据配置的OverflowAction),会发生特定事件:

http://www.eventid.net/display.asp?eventid=6000&eventno=291&source=EventLog&phase=1

您应该使用WmiEventWatcher查看此事件的事件(尤其是偶数6000,错误),就像您要关注任何其他事件一样。

-Oisin (pseventing的作者)

答案 2 :(得分:0)

我想知道是否存在可以为其注册接收器的关联WMI事件。如果我有时间,我会找一个。

好的,所以这是我到目前为止所发现的。有一个__EventQueueOverflowEvent事件接收器可用。我怀疑这个可能适合你。还有__SystemEvent也可能有用。

答案 3 :(得分:0)

感谢Oisin事件,但我现在正在考虑在覆盖之前日志已满时在Powershell中对Traception执行异常处理。我认为例外被称为“日志已满”,但我不确定,我不太了解Trap和Throw它据说记录不清,但我正在追踪。

答案 4 :(得分:0)

一种方法是使用Microsoft System Center或MOM监视事件ID 523.我认为需要将补丁应用于将注册完整日志事件的服务器。查看Microsoft网站。我们的触发率为90%,我相信你可以设置你想要触发的百分比。

您也可以使用WMI或Powershell执行此操作,但必须经常运行以捕获更改。事件日志的简单DIR将为您提供大小, 如果您知道上限,则可以计算%full。这可以在VB中自动完成 或C#。