当前位置 : 主页 > 网络编程 > net编程 >

C#:根据应用名称,获取Windows日志

来源:互联网 收集:自由互联 发布时间:2023-10-08
关于Windows日志的获取 ​​获取方式​​ ​​应用场景​​ ​​手动获取​​ ​​步骤说明​​ ​​图片说明​​ ​​自动获取​​ ​​程序代码​​ ​​验证​​ ​​验证代码​




关于Windows日志的获取

  • ​​获取方式​​
  • ​​应用场景​​
  • ​​手动获取​​
  • ​​步骤说明​​
  • ​​图片说明​​
  • ​​自动获取​​
  • ​​程序代码​​
  • ​​验证​​
  • ​​验证代码​​
  • ​​获取情况​​
  • ​​EventLogEntryType​​

获取方式

应用场景


一般情况下,程序还没有结束之前,程序自带的日志系统会记录各种异常信息。但是在特殊情况下,程序会有闪退等情况,导致程序自带的日志系统无法记录闪退原因。因此,获取Windows系统日志去确认程序闪退等异常的原因则十分有用且必要。


手动获取

步骤说明


此电脑==》管理==》事件查看器==》Windows日志==》应用程序==》筛选当前日志==》根据应用名称进行筛选


图片说明

C#:根据应用名称,获取Windows日志_Windows日志

C#:根据应用名称,获取Windows日志_windows_02

自动获取

程序代码

try
{
string ApplicationName="";//应用名称,自定义
List<EventLogEntry> list_EventLogEntry = new List<EventLogEntry>();
list_EventLogEntry.Clear();

string[] m_LogTypes = new string[] { "Application", "Security", "System" };

try
{
foreach (string m_LogMessage in m_LogTypes)
{
//break;
EventLog m_ALLLog = new EventLog();
m_ALLLog.Log = m_LogMessage;

foreach (EventLogEntry m_Log in m_ALLLog.Entries)
{
// list_EventLogEntry.Add(m_Log); continue;
if (m_Log.EntryType == EventLogEntryType.Error)
{
list_EventLogEntry.Add(m_Log);
//Console.WriteLine("\n####################################\n");
//Console.WriteLine(m_Log.Message);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

for (int i = 0; i < list_EventLogEntry.Count; i++)
{
if (list_EventLogEntry[i].Message.Contains(ApplicationName))
{
Console.WriteLine("Source : " + list_EventLogEntry[i].Source);
Console.WriteLine("Message : " + list_EventLogEntry[i].Message);
}
}


}
catch (Exception err)
{
Console.WriteLine(err.Message);
}

验证

验证代码


异常程序必定抛异常


using System.Web;
using System.Net.Sockets;
using System.IO;
using System.Xml;
using System.Windows;
using System.Windows.Forms;
using System.Reflection;
using System.Diagnostics;

namespace AngDemo
{
static void Main(string[] args)
{
int num = 0;
int k = 1 / num;

return;
}
}

获取情况

Source : .NET Runtime
Message : 应用程序: AngDemo.exe
Framework 版本: v4.0.30319
说明: 由于未经处理的异常,进程终止。
异常信息: System.DivideByZeroException
AngDemo.Program.Main(System.String[])


Source : Application Error
Message : 错误应用程序名称: AngDemo.exe,版本: 1.0.0.0,时间戳: 0xcbb0d38c
错误模块名称: unknown,版本: 0.0.0.0,时间戳: 0x00000000
异常代码: 0xc0000094
错误偏移量: 0x00bb0adb
错误进程 ID: 0x5bd0
错误应用程序启动时间: 0x01d80f2fb898e264
错误应用程序路径: D:\AngDemo\bin\Debug\AngDemo.exe
错误模块路径: unknown
报告 ID: dba406cf-ff13-47bf-b542-29a67832a052
错误程序包全名:
错误程序包相对应用程序 ID:


由上异常信息中可以看到,出于什么异常,以及在哪个函数中,都可以清楚 标记


EventLogEntryType


提供对 C# 代码生成器和代码编译器的实例的访问权限。


//
// 摘要:
// 提供对 C# 代码生成器和代码编译器的实例的访问权限。
public enum EventLogEntryType
{
//
// 摘要:
// 错误事件。 它指示用户应该知道的严重问题(通常是功能或数据的丢失)。
Error = 1,
//
// 摘要:
// 警告事件。 它指示并不立即具有重要性的问题,但此问题可能表示将来会导致问题的条件。
Warning = 2,
//
// 摘要:
// 信息事件。 它指示重要、成功的操作。
Information = 4,
//
// 摘要:
// 成功审核事件。 它指示当审核访问尝试成功(例如成功登录)时发生的安全事件。
SuccessAudit = 8,
//
// 摘要:
// 失败审核事件。 它指示当审核访问尝试失败(例如打开文件的尝试失败)时发生的安全事件。
FailureAudit = 16
}



【文章原创作者:滨海网页设计 http://www.1234xp.com/binhai.html 复制请保留原URL】
上一篇:C#网络编程:通过IP地址获取主机名称
下一篇:没有了
网友评论