安装期间增加 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()
我想做的是增加与我们的应用程序一起部署的 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()