我将以下内容编辑到 Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddEventLog(eventLogSettings =>
{
eventLogSettings.SourceName = "MyTestLog";
});
});
webBuilder.UseStartup<Startup>();
});
Run Code Online (Sandbox Code Playgroud)
并将一些示例日志写入控制器
public IEnumerable<WeatherForecast> Get()
{
_logger.LogCritical("Critical Log");
_logger.LogError("Error Log");
_logger.LogWarning("Warning Log");
_logger.LogInformation("Info Log");
_logger.LogDebug("Debug Log");
_logger.LogTrace("Trace Log");
...
}
Run Code Online (Sandbox Code Playgroud)
如果我运行它,它会在控制台中显示“严重”-“错误”-“警告”-“信息”的日志。与 AppSettings 中配置的内容匹配。
应用程序设置.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
Run Code Online (Sandbox Code Playgroud)
在 Windows 事件日志中,它仅显示严重、错误和警告日志,而不关心我的应用程序设置。我确信这是一个简单的配置问题,但我没有找到任何相关文档。
如何获取 Windows …
我需要修改用win32 C(不是c ++)编写的简单Windows服务.
是否有一个库可以用来将事件日志条目写入Windows事件日志而不使用eventcreate.exe?或者我是否必须将其修改为编译为c ++程序?
我正在使用
EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, queryString);
EventLogReader logReader = new EventLogReader(eventsQuery);
Run Code Online (Sandbox Code Playgroud)
为了读取日志事件.
我需要找到事件编号的最新用法#xxx(没关系)
但读者从此开始1--->100
我需要它开始,100--->1所以我可以得到第一个(满足我的查询)和打破循环.
我不想使用中间人DATA BUFFER然后reverse它.
ps - 我的日志文件大约是400 MB.(win7).
当我使用以下代码写入应用程序事件日志时,一切正常:
EventLog log = new EventLog();
log.Source = "Application";
log.WriteEntry("test message", EventLogEntryType.Error);
Run Code Online (Sandbox Code Playgroud)
当我使用来自MSDN和所有其他博客的代码时,我收到了安全错误(我猜是因为CreateEventSource引发了它).
string sSource = "MyWebService";
string sLog = "myApplication";
string sMsg = errorMessage;
if (!EventLog.SourceExists(sSource))
EventLog.CreateEventSource(sSource, sLog);
EventLog.WriteEntry(sSource, sMsg, EventLogEntryType.Error);
Run Code Online (Sandbox Code Playgroud)
那么,如果我需要的是写入默认存在的应用程序日志,是否需要检查源是否存在?
写入EventViewer的正确方法是什么?
我正在使用此代码从我的win7计算机中读取自己的事件日志.
EventLogQuery eventsQuery = new EventLogQuery("Security", PathType.LogName, queryString);
eventsQuery.ReverseDirection = true;
EventLogReader logReader = new EventLogReader(eventsQuery);
Run Code Online (Sandbox Code Playgroud)
但是 - 我需要读取远程计算机的EventLog (Lan - Same domain)
我怎样才能做到这一点 ?
不知何故,应用程序事件日志计数最终达到18,446,744,073,709,551,499.当我想使用事件查看器查看事件时,这会导致MMC管理单元失败,从而产生System.OverflowException(对于Int64,值太大或太小.).有什么想法,还是我应该清除日志?
如果VB6应用程序导致Application Hang事件显示在事件查看器中,我如何能够找到有关应用程序挂起的原因的更多信息?
Application Hang事件是否意味着应用程序已冻结和崩溃,或者只是暂时挂起?
我在这个事件的事件日志中得到的是:
Hanging application [MyAppName].exe, version [MyAppVersionNo], hang module hungapp, version 0.0.0.0, hang address 0x00000000.
Run Code Online (Sandbox Code Playgroud)
这还不够,我希望能够更多地了解它悬挂的原因.需要采取哪些代码更改或其他步骤才能使应用程序在事件日志中提供更多详细信息?
我有以下代码:
string query = "???";
EventLogQuery elq = new EventLogQuery("Application", PathType.LogName, query);
elq.Session = new EventLogSession("x.x.x.x");
EventLogReader elr = new EventLogReader(elq);
Run Code Online (Sandbox Code Playgroud)
我正在试图弄清楚我需要设置查询以查找源为"SQLSERVERAGENT"的所有条目.
在我们的应用程序中存在某些情况,其中发生非致命错误并且应用程序恢复.
在将所述项目填充到选择列表时,无法正确识别某些可导入项目的示例.错误不会使应用程序崩溃,但会提醒用户某些项目无法加载.
在这种情况下,错误将作为警告记录到应用程序事件日志中.这是应用程序恢复的非致命错误,但是如果需要,登录到事件日志可以让我们看到原始错误.
我们的问题是该软件需要能够与高级用户帐户一起安装.不是管理员帐户,我们将无法为应用程序创建自定义事件源.
目的是将错误写入"应用程序"事件源(已存在于应用程序事件日志中).但是,这样做也会导致类似于以下内容的文本.
无法找到源应用程序中的事件ID 0的描述.引发此事件的组件未安装在本地计算机上,或者安装已损坏.您可以在本地计算机上安装或修复该组件.
这是因为当我们编写它时,EventID为0.这种方法可以完成工作,但有更好的方法吗?是否有非管理员方式为应用程序事件源指定EventID以指示它来自我们的应用程序?
调用Trace.WriteLine时,以下侦听器将创建一个事件条目.如果源不存在,他将在默认日志通道"应用程序"中创建它.我想指定另一个默认的日志频道,但搜索45分钟后,我似乎找不到解决方案.有任何想法吗?
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="Source">
</add>
</listeners>
</trace>
</system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)