Tag: event log

EventLogReader和EventRecord:消息在哪里?

我想查询远程计算机上的应用程序事件日志,并使用EventLogReader而不是EventLog,因为它需要很长时间才能找到EventLog所需的事件。 但是,即使它使用EventLogReader发现事件的速度要快得多,我也无法弄清楚我需要的信息在这个对象上…尤其是消息。 public static void Load() { string query = “*[System/Provider/@Name=\”SQLSERVERAGENT\”]”; EventLogQuery elq = new EventLogQuery(“Application”, PathType.LogName, query); elq.Session = new EventLogSession(“xxxx”); EventLogReader elr = new EventLogReader(elq); _logEntries = new List(); EventRecord entry; while ((entry = elr.ReadEvent()) != null) { var Message = entry.??? // I want process the message in the event here, // […]

ASP.NET错误的事件日志源属性的自定义值

默认情况下,ASP.NET将所有未捕获的exception记录到系统事件日志中。 我知道应该有一个适当的日志设施,但这比没有好,它可以作为一个临时解决方案。 我希望能够有效地过滤日志中的事件。 我了解到,在以编程方式进行日志记录时,您可以通过以下方式为事件日志中的Source列设置自定义值: EventLog eventLog = new EventLog(“Application”); eventLog.Source = “My custom name”; eventLog.WriteEntry(“Some error description …”, EventLogEntryType.Error); 但是,ASP.NET将此值设置为“ASP.NET”,后跟其版本。 我简要地检查了web.config的文档,但没有找到明显的地方来改变它。 我想知道它是否可以改变。

即使我正在检查,也从EventLog.CreateEventSource接收“…已经注册…”!EventLog.SourceExists

我的以下代码失败,“…已经在本地计算机上注册为源”,即使我先做检查: lock ( eventLock ) { string eventLog = Constants.EventLogPL; string eventSrc = Constants.EventSrcPL; if (!EventLog.Exists(eventLog)) { if (!EventLog.SourceExists(eventSrc)) { try { EventLog.CreateEventSource(eventSrc, eventLog); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.Message); } } } } 我以为我的调用!EventLog.SourceExists足以防止我的错误! 我正在使用2010 .NET 4和Windows 7 64编译到任何CPU。 编辑:更新代码以获取本地常量以检查它们是否未更改,并使用锁定以确保只有一个线程可以测试和创建。 代码仍然失败并出现相同的错误。

事件记录IPAddress并不总是解析

我正在使用System.Diagnostics.Eventing.Reader.EventLogWatcher类挂钩安全事件日志,我正在观察2008服务器盒上的事件ID 4625,以查看传入的失败登录(特别是RDP)。 日志捕获工作正常,我将结果转储到队列中以进行相关的后续处理。 但是,有时捕获的日志会填充(解析)IPAddress数据字段,有时则不会。 我在观看服务器的同时运行windump,尝试从不同的服务器和操作系统风格进行常规的RDP登录,我可以得出的唯一结论是版本差异问题,而且编码也不错。 虽然我错了,LOL。 问题在于事件日志本身与这些连接有关。 记录所有失败的RDP登录,并正确处理,但某些日志根本不记录失败连接的源IP地址。 一些较新的mstsc风格会不会导致远程事件日志不记录源IP地址? 对于我对这个挂钩服务器运行的任何其他2008服务器来说,这似乎都是正确的。 到目前为止我尝试过的任何2003或XP机器都已正确记录。 如果您需要更多信息,请告诉我们。 谢谢! 编辑 我是否需要做一些疯狂的事情 – 比如实施sharpPcap并将IP与事件日志相关联? = /。 也许可以查询lsass(这不是通常写入安全日志的唯一内容)吗?

安装Windows服务时是否需要手动创建Windows事件日志源

我用C#开发了一个Windows服务。 我用Visual Studio 2008创建了一个安装程序,它安装了Windows服务。 到目前为止一切都很好。 我想确保在安装时创建了事件源,以便运行时的任何错误/exception条件都正确记录到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); }

在安装.Net服务期间,创建自定义事件日志和事件源的最可靠方法是什么

我在安装.Net Windows服务期间无法可靠地创建/删除事件源。 这是我的ProjectInstaller类的代码: // Create Process Installer ServiceProcessInstaller spi = new ServiceProcessInstaller(); spi.Account = ServiceAccount.LocalSystem; // Create Service ServiceInstaller si = new ServiceInstaller(); si.ServiceName = Facade.GetServiceName(); si.Description = “Processes …”; si.DisplayName = “Auto Checkout”; si.StartType = ServiceStartMode.Automatic; // Remove Event Source if already there if (EventLog.SourceExists(“AutoCheckout”)) EventLog.DeleteEventSource(“AutoCheckout”); // Create Event Source and Event Log EventLogInstaller […]

IIS FTP 7.5可扩展性(IFtpLogProvider并将FTP故障记录到事件日志中)

任何熟悉IIS 7.5中的FTP可扩展性的人都知道我可能做错了什么? 我很难让IFtpLogProvider的实现正常工作以进行自定义日志记录。 我想要做的就是将超出静态阈值的故障记录到事件日志中,并且经常进行垃圾收集。 我已经尝试过使用通用字典和提供程序而没有运气,现在即使这些简单的代码我也无法工作。 提供程序甚至不在下面的代码存根中创建事件日志(或者如果我事先创建它,则使用它)。 所以现在我很困惑。 我按照说明在VS内部签名后注册程序集,我可以确认它已添加到GAC中。 通过Register Custom Providers选项将它添加到IIS 7.5似乎也没问题。 任何有关具体建议的帮助都会非常感激,因为即使是Robert McMurray提供的优秀教程,我仍然会遇到这些问题。 顺便说一下,我使用托管代码的界面在2008 R2框上运行它。 存根如下: using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Configuration.Provider; using System.Data; using System.Data.SqlClient; using System.Diagnostics; using System.Diagnostics.Eventing; using System.Text; using Microsoft.Web.FtpServer; using System.IO; public class test: BaseProvider, IFtpLogProvider { void IFtpLogProvider.Log(FtpLogEntry loggingParameters) { if (!EventLog.SourceExists(“TEST”)) { EventLog.CreateEventSource(“TEST”, “TEST”); } […]

从事件日志获取事件的详细信息

我试图根据列表框中项目的选择从事件日志中获取详细信息。 我试图将细节放入文本框中。 我已经成功地找到了自己的解决方案。 我所做的,并且非常慢,通过事件日志重复并找到与日志索引的匹配,然后显示消息,但这是一个耗时的操作。 是否有更快的方法可以根据日志索引直接获取特定的日志条目。 我使用WPF和C#。 private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) { EventLog eventLog1 = new EventLog(); eventLog1.Log = “System”; foreach (System.Diagnostics.EventLogEntry entry in eventLog1.Entries) { var newEntry = entry.Index + ” – ” + entry.EntryType + ” – ” + entry.TimeWritten + ” – ” + entry.Source; backgroundWorker2.ReportProgress(0, newEntry); } } void backgroundWorker2_ProgressChanged(object […]

如何以编程方式打开事件日志?

我使用通常的方法将错误记录到事件日志中: System.Diagnostics.Trace.TraceError(“” + DateTime.Now.ToUniversalTime() + “” + message + “”); 我想知道是否有办法调用这个日志文件并为用户显示它(以我自己的格式或直接打开事件日志文件’事件查看器’)。 我在%SystemRoot%\ System32 \ Winevt \ Logs \ mylog.evtx中找到了该文件,但不确定我是否应该以这种方式接近它。 理想情况下,我想模拟事件查看器的function,但为我的应用程序定制。

用于远程计算机的EventLogQuery阅读器?

我正在使用此代码从我的win7计算机上读取自己的事件日志。 EventLogQuery eventsQuery = new EventLogQuery(“Security”, PathType.LogName, queryString); eventsQuery.ReverseDirection = true; EventLogReader logReader = new EventLogReader(eventsQuery); 但是 – 我需要读取远程计算机的EventLog(Lan – Same domain) 我怎样才能做到这一点 ?