这是一个故意半复制的如何使用WiX和WIX创建事件日志源:使用.NET消息文件创建EventSource.
我的第一个问题是,它真的必须如此复杂吗?有没有办法简单地指定WiX,"我的程序是一个.Net程序,它需要写入事件日志 - 请做必要的设置"?
好吧,假设这是不可能的,我想收到任何关于必要的WiX语句的建议,以使其工作,无论安装了哪个版本的.Net Framework,无论它是32位还是64位系统.毕竟,我的大多数.Net程序都可以在.Net 2.0或更高版本上运行,在32位或64位运行,所以它无关紧要.
最后一个问题:有没有办法让它面向未来?如果我今天生成的MSI文件仍然可以在五年内运行,那将是很好的,即使.Net CLR 2.0和4.0已经降级到Windows 11中的垃圾箱或者其他所谓的垃圾箱.
我正在开发一个从远程机器读取事件日志(应用程序)的应用程序.我正在使用.net中的EventLog类,然后迭代日志条目,但这非常慢.在某些情况下,某些计算机具有40000多个日志条目,并且需要数小时才能遍历条目.完成这项任务的最佳方法是什么?.net中是否有其他类更快或其他任何技术?
我用C#开发了一个Windows服务.我用Visual Studio 2008创建了一个安装程序,它安装了Windows服务.到目前为止一切都很好.我想确保在安装时创建了事件源,以便运行时的任何错误/异常条件都正确记录到Windows事件日志中.
事件源是否作为Windows服务安装(和卸载)的一部分自动创建(和删除),或者我是否必须自己处理并创建自定义操作以创建和删除它,如下所示?
protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall(savedState);
if (!EventLog.SourceExists(ServiceName))
EventLog.CreateEventSource(ServiceName, "Application");
}
protected override void OnAfterUninstall(IDictionary savedState)
{
base.OnAfterInstall(savedState);
if (EventLog.SourceExists(ServiceName))
EventLog.DeleteEventSource(ServiceName);
}
Run Code Online (Sandbox Code Playgroud) 我使用System.Diagnostics.EventLog来查看本地计算机上的日志.但是,我想打开一个保存的事件日志存档(.evt或.evtx)并查看保存文件中包含的日志.我只需要查看与文件中的日志相关联的时间戳,消息,来源等.这可以用C#完成吗?
我需要编写一个应用程序来获取系统/应用程序的事件日志.另一个要求是我需要每隔一分钟读取事件日志以获取自上次读取以来的新事件日志.目前我正在考虑使用C#来实现而不是C++.
有了这些,我读了几个网页,如果我理解正确,我可以使用WMI或EventLog类来读取事件日志.在我看来,当使用EventLog类添加新事件日志时,我会收到通知,但我不确定这比使用WMI更好.如果我的理解是正确的,我想知道我应该采取哪种方式?
请给我一些建议.谢谢.
我的Windows服务写入事件日志,但我遇到了各种问题,这是正确的.所以在这个过程中我使用了许多不同的名字.我跟着一篇文章描述了如何在Windows服务中设置事件日志.因此,在设计器中添加EventLog组件后,我已将其添加到构造函数中:
if (!System.Diagnostics.EventLog.SourceExists("AS0604"))
System.Diagnostics.EventLog.CreateEventSource("AS0604", "SIRR");
eventLog1.Source = "AS0604";
eventLog1.Log = "SIRR";
eventLog1.WriteEntry("AS is initializing...", EventLogEntryType.Information, 16);
Run Code Online (Sandbox Code Playgroud)
我发现,如果源名称与Windows服务的服务名称相同,则会出现问题.但是我一直在为Log和Source更改名称.该
EventLog[] eventLogs = EventLog.GetEventLogs();
Run Code Online (Sandbox Code Playgroud)
列出事件日志,我能够删除那些我没有使用EventLog.Delete命令.
但这是如何工作的?这些已删除的日志中是否仍有已注册的来源?我可以获得注册来源列表吗?
以下是我在运行紧随其后的代码时遇到的异常:
找不到源,但无法搜索部分或全部事件日志.无法访问的日志:安全性.
代码是
if (!EventLog.SourceExists(this.EventLogSource))
Run Code Online (Sandbox Code Playgroud)
异常的内容对我来说很有意义,这就是为什么不这样做.此行在Visual Studio 2010,.NET 4中作为控制台应用程序运行(暂时).我已经在不同的环境中运行了这个,但我不希望我是远程桌面的事实打破这种方法.我试过更改HKML\CCS\Services\eventlog权限 - 无济于事,以及C:\Windows\System32\Winevt\Logs\Security.evtx权限.再一次,无济于事.
我的问题如下:
任何建议都会很棒.
我们的事件查看器显示了我们要从事件日志中省略的两条信息级消息:
研究如何排除这些类型的消息让我明白,如果我在web.config文件中包含以下内容,这些消息将不会显示.当我测试这个时,我看到的确是这样.
<healthMonitoring>
<rules>
<clear />
<add name="All Errors Default" eventName="All Errors" provider="EventLogProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" custom=""/>
</rules>
</healthMonitoring>
Run Code Online (Sandbox Code Playgroud)
换句话说,我从默认的web.config中省略了这个:
<add name="Failure Audits Default" eventName="Failure Audits" provider="EventLogProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" custom=""/>
Run Code Online (Sandbox Code Playgroud)
我的问题是:我还有什么可能通过删除此节点来排除事件日志?如果还有其他潜在的影响,是否有另一种或更好的方法可以排除上面提到的那两种类型的错误日志?
提前致谢!
asp.net authentication web-config health-monitoring event-log
我想从ASP.Net Core应用程序的Controller方法写入Windows事件日志.
我的问题是,在我希望写入日志信息的地方,我不断收到错误/信息日志:
无法找到源应用程序中的事件ID xxxx的说明.引发此事件的组件未安装在本地计算机上,或者安装已损坏.您可以在本地计算机上安装或修复该组件.
如果事件源自另一台计算机,则必须随事件一起保存显示信息.
活动中包含以下信息:
My.Fully.Qualified.Namespace.WebApi.Controllers.MyController方法'MyMethod'中出现错误
消息资源存在但在字符串/消息表中找不到该消息
作为一个快速说明,在.Net Core之前,我总是通过使用Powershell或Command创建事件源或正确配置Microsoft.Practices.EnterpriseLibrary.Logging应用程序块或其他第三方库来解决类似的错误
我使用的方法是:
安装Nuget软件包:Microsoft.Extensions.Logging.Abstractions和Microsoft.Extensions.Logging后,我在Start Configure代码块中指定EventLog Provider.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory
.AddDebug()
.AddEventLog();
//... rest of the code here
}
Run Code Online (Sandbox Code Playgroud)
对于每个Controller,使用以下ILogger<T>方法:
public class MyController : Controller
{
private readonly IMyRepository _myRepository;
private readonly ILogger _logger;
public MyController(IMyRepository myRepository,
ILogger<MyController> logger)
{
_myRepository = myRepository;
_logger = logger;
}
public bool …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我Windows NT日志消息的最大大小是多少?我知道可以从32 MB重置事件日志的最大日志大小.我对NT事件日志中单个消息可以保存的内存感兴趣.
提前致谢