标签: event-log

如何让EventLog将用户名记录到Window事件日志中?

我正在使用C#写入Windows事件日志.我可以在mmc.exe"计算机管理"工具中设置每个字段,但"用户"字段除外.

客户端应用程序是ASP.NET并使用表单身份验证.

public static void WriteOnce()
{
    EventLog log = new EventLog("MyApp");
    if (!EventLog.SourceExists("MySource"))
    {
        EventSourceCreationData data = new EventSourceCreationData("MySource", "MyApp");
        EventLog.CreateEventSource(data);
    }
    log.Source = "MySource";
    log.WriteEntry("Hello World", EventLogEntryType.Information,123,456,new byte[]{1,2,3});
}
Run Code Online (Sandbox Code Playgroud)

更新:我检查,在ASP.NET中,即使设置身份impersonation = true&authentication = windows仍然没有用户.

我还在控制台应用程序中检查过没有用户.

c# event-log

5
推荐指数
1
解决办法
5106
查看次数

TEventLogger有什么亮点吗?

我想看看将事件从Delphi 5应用程序记录到Windows日志,从这里我看到我可以使用TEventLogger该类来执行此操作.

但是,我找不到有关该TEventLogger.LogMessage过程语法的任何文档,因此我不知道所有参数的含义,如何使用它们,甚至可能的值.

我试着环顾四周,所有我觉得是从Embarcadero公司以说明该功能存在,但没有关于它的语法和MSDN是没有帮助,因为我只能找到的BizTalk版本,确实我没有好.

有没有人有这方面的帮助页面或信息可能会对我能用它做些什么有所启发?

delphi helpfile event-log

5
推荐指数
2
解决办法
2890
查看次数

一个始终可用于写入的事件日志源?

是否有一个事件日志源始终可供ASP.NET webapp写入?

背景故事,如果有人有一个看似无关的解决方案:

我们的ASP.NET webapp使用自己的事件日志源,但它没有创建它的权限.因此,如果webapp尝试写入条目时事件日志源不存在(安装说明指示管理员手动注册事件日志源,但......),我们的webapp不会放入任何内容有问题时的事件日志.

我希望有另一个(应用程序不可知)源我可以用来通知观看事件日志的人.

asp.net fallback eventlog-source event-log contingency

5
推荐指数
1
解决办法
1686
查看次数

ASP.NET应用程序未记录到Windows事件日志

我有两个ASP.NET MVC Web应用程序.其中一个将未处理的异常记录到Windows事件日志中.另一个没有.

IIS或web.config中是否有设置以启用事件日志记录?

对于广泛的问题道歉,我真的在寻找调查途径.

asp.net error-logging event-log

5
推荐指数
1
解决办法
5647
查看次数

有没有办法告诉哪个EventLog在C#中导致了EntryWritten事件?

我正在开发一个显示事件日志数据的Web应用程序,类似于事件查看器.应用程序还必须为用户提供一种订阅事件日志的方法,并在使用Web服务将条目写入订阅日志时接收通知.

我正在使用此代码订阅Web服务中的事件日志:

EventLog eventLog = new EventLog(observer.logName, observer.machineName);
eventLog.EnableRaisingEvents = true;
eventLog.EntryWritten += new EntryWrittenEventHandler(eventLog_EntryWritten);
eventList.Add(eventLog);
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用观察者作为事件日志的订阅者,并且当处理EventWritten事件时,调用一个观察者的Update方法.问题是,我不知道如何区分事件日志,因为它们都使用相同的事件处理程序.我这样做是因为事件日志的数量因机器而异.此外,我希望观察者只处理一种类型的EventLog,即.当事件写入应用程序日志时,一个观察者将发送电子邮件.

我使用这行代码来获取当前计算机上的所有日志:

remoteEventLogs = EventLog.GetEventLogs(machineName);
Run Code Online (Sandbox Code Playgroud)

EventWritten事件处理程序具有此对象发送者参数,但Visual Studio将其类型显示为EventLogInternal,我无法使用它,并且我无法将发送者强制转换为EventLog以获取EventLog.Log属性.如果我尝试投射它,像这样:

void eventLog_EntryWritten(object sender, EntryWrittenEventArgs e)
    {
        var log = (EventLog)sender;
    }
Run Code Online (Sandbox Code Playgroud)

我得到一个例外,说我不能将EventLogInternal转换为EventLog.

有没有办法知道哪个EventLog会触发事件?

谢谢

.net c# event-log

5
推荐指数
1
解决办法
1882
查看次数

使用非管理员帐户的log4Net eventlog权限问题

这可能不是SiteCore本身的问题,但我已将其包含在内以保证完整性.我使用应用程序池的自定义标识在IIS7下运行sitecore 6.3.我无法让Sitecore将其日志信息(使用默认的log4net设置)写入事件日志.我按照这里的建议:http://logging.apache.org/log4net/release/faq.html#Why%20doesn%27t%20the%20EventLogAppender%20work?虽然我将自定义标识作为管理员组的成员时工作正常,但我需要找到一种方法让它在生产中工作而没有这样的安全黑客.

奇怪的是我有一个MSI安装它(在一个帐户运行管理员组的成员)并在事件日志中为我创建正确的注册表项,但尽管如此,我仍然收到以下错误我使用自定义标识运行应用程序(没有它是管理员的成员).

log4net:ERROR DOMConfigurator: Could not create Appender [EventLogAppender] of type [log4net.Appender.EventLogAppender]. Reported error follows.
System.Security.SecurityException: Requested registry access is not allowed.
at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
at System.Diagnostics.EventLog.GetEventLogRegKey(String machine, Boolean writable)
at System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly)
at System.Diagnostics.EventLog.DeleteEventSource(String source, String machineName)
at log4net.Appender.EventLogAppender.ActivateOptions()
at log4net.Repository.Hierarchy.DOMHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
The Zone of the assembly that failed was:
MyComputer
log4net:ERROR DOMConfigurator: Appender named [EventLogAppender] not found.
Run Code Online (Sandbox Code Playgroud)

我想我可以将其缩小到注册表权限问题我已授予Everyone对以下注册表项和子项的完全权限,但它也不起作用: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog

自定义标识是以下组的成员:

  • 事件日志读者
  • IIS_USERS
  • 性能监视器用户

我也看到了以下似乎问同样问题的问题 …

log4net iis-7 event-log

5
推荐指数
1
解决办法
3716
查看次数

抛出错误但不向用户显示错误的最简洁方法(没有自定义错误页面)

我正在运行一些只需要运行一次的代码,但它依赖于外部资源而且可能会失败.我希望错误出现在事件日志中,但我不希望用户看到它.我想尽可能避免使用自定义错误页面.

我可以捕获异常并将其自己写入事件日志,但我担心我不能保证asp.net事件源的名称会是什么(它似乎会根据框架版本而改变.)我也是无法创建我自己的事件源,因为它需要管理权限.

我目前正在努力的方法是一个黑客(它还没有工作),它看起来像这样:

    public void Init(HttpApplication context)
    {
        try
        {
            throw new Exception("test"); // This is where the code that errors would go
        }
        catch (Exception ex)
        {
            HttpContext.Current.Application.Add("CompilationFailed", ex);
        }
    }

    private void context_BeginRequest(object sender, EventArgs e)
    {
        if (HttpContext.Current.Application.AllKeys.Contains("CompilationFailed"))
        {
            // It failed on Init - we can't throw an exception there so lets try it here

            var origEx = (Exception)HttpContext.Current.Application["CompilationFailed"];
            // Only ever do this once
            HttpContext.Current.Application.Remove("CompilationFailed");

            // This should just look like a normal page load …
Run Code Online (Sandbox Code Playgroud)

c# asp.net event-log

5
推荐指数
1
解决办法
127
查看次数

我可以使用事件在应用程序之间发出信号吗?

我有一个Windows服务,它会更新一些报告信息。

我可以做的事情,在同一台机器上运行的其他一些应用程序应该导致报告信息进行更新。

双方都不了解对方,但是我希望能够让应用程序做一些事情来表明应该进行更新。

我最初的想法是让应用程序引发某种系统范围的事件。他们不知道或不在乎是否有其他服务正在监听它来处理它。

同时,该服务正在监听该事件,并且不知道或不在乎谁引发了该事件。

我可以通过将应用程序写入系统事件日志,并通过服务监听该日志事件来实现此目的。。。。但这似乎使应用程序事件日志变得混乱。

是否有另一种更合适的方式来处理此问题?

.net c# messaging events event-log

5
推荐指数
1
解决办法
986
查看次数

使用Coldfusion将事件写入Windows事件日志

是否有一种方法(使用ColdFusion安装的内置或底层Java库)可以使ColdFusion 10应用程序将消息写入Windows事件日志?

coldfusion event-log coldfusion-10

5
推荐指数
1
解决办法
222
查看次数

Get-EventLog - 某些事件日志源缺少有效消息

我正在使用get-eventlog来提取和过滤系统事件日志数据.我发现,get-event日志无法正确返回与某些条目相关的消息.这些条目通常出现在事件日志查看器中.例如

get-eventlog -logname system | ? { $_.source -eq "Microsoft-Windows-Kernel-General" }
Run Code Online (Sandbox Code Playgroud)

返回8个条目,所有条目都有以下格式的消息:

The description for Event ID '12' in Source 'Microsoft-Windows-Kernel-General' cannot be found.  
The local computer may not have the necessary registry information or message DLL files to display the message, or you may not have permission to access them.  
The following information is part of the event:'6', '1', '7601', '18798', '1', '0', '2015-06-13T08:33:32.359599800Z'
Run Code Online (Sandbox Code Playgroud)

如果我过滤同一来源的系统事件日志,我可以清楚地看到完整形成的消息.例如

The operating system started at system time ?2015?-?06?-?13T08:33:32.359599800Z.
Run Code Online (Sandbox Code Playgroud)

我运行以下命令以查看是否有任何其他提供程序无法返回有效的事件消息:

get-eventlog -LogName system | ? …
Run Code Online (Sandbox Code Playgroud)

powershell event-log get-eventlog

5
推荐指数
1
解决办法
1878
查看次数