安装期间增加 windows 事件日志大小

Increase windows event log size during installation

我想做的是增加与我们的应用程序一起部署的 windows 事件日志的限制,我 运行 遇到了麻烦。

好的,让我解释一下。我使用 Microsoft Diagnostics nuget 包创建了事件清单清单:Microsoft.Diagnostics.Tracing.EventSource 和 Microsoft.Diagnostics.Tracing.TraceEvent。 然后在安装期间将清单和相关资源库部署到目标机器。这是通过 wix 使用看起来有点像这样的代码完成的:

 <Directory Id="System64Folder" Name="SystemFolder" >
   <Component Id="EventSource" Guid="4ce67f42-a687-99ee-b45c-1d88aa20b805">
     <File Id="etwManifest.dll"
            Source="$(var.BaseDir)\Company.ServiceLayer.Interfaces.Company-Product-Module.etwManifest.dll" >
     </File>
   </Component>
 </Directory>
 
 <Component Id="EventManifest" Guid="7eb9a485-c447-6932-87f0-6b08b41d99ee">
   <File Id="etwManifest.man" 
          Source="$(var.BaseDir)\Company.ServiceLayer.Interfaces.Company-Product-Module.etwManifest.man">
     <util:EventManifest  MessageFile="[System64Folder]Company.ServiceLayer.Interfaces.Company-Product-Module.etwManifest.dll"  ResourceFile="[System64Folder]Company.ServiceLayer.Interfaces.Company-Product-Module.etwManifest.dll"></util:EventManifest>
   </File>
 </Component>

到目前为止一切正常:我什至可以在应用程序和服务日志下看到事件日志,并且事件已写入日志。

问题是事件日志的默认大小是 1 兆字节,我们的客户担心这不足以满足他们的需求,因此我们想要更改它。我试过看看 wix 是否可行,但我的搜索表明不行。

不过我确实找到了这篇文章,其中建议 运行 一个 powershell 脚本可能会有所帮助。 Link 此处:Increase/Decrease the size of Event Log on Install 我确实在安装过程中设法获得了脚本 运行 但随后出现此错误:Limit-EventLog : The Log name "Company-Product-Module/Operational" does not exist in the computer "localhost"

接下来我会进行一些挖掘并尝试查找日志。我尝试使用日志文件的名称“Company-Product-Module%4Operational”或从名称中删除“Operational”,但没有成功。 另外 运行 get-eventlog -list 并且我的日志未列出,但我可以在事件查看器中清楚地看到它。 Get-WmiObject Win32_NTEventlogfile

同样的故事

问题是我缺少什么?我是否缺少注册表项?这就是powershell看不到日志的原因吗?

经过进一步研究,我发现 Limit-EventLog 是一个旧命令,自 Vista 以来已被淘汰。 在以后的 OS 版本中实现此结果的正确方法是使用 Get-WinEvent。 这是我最终使用的完整脚本

$targetLog = Get-WinEvent -ListLog "Company-Product-Module/Operational"
$targetLog.MaximumSizeInBytes = 2105344
$targetLog.SaveChanges()