关于Windows日志的获取 获取方式 应用场景 手动获取 步骤说明 图片说明 自动获取 程序代码 验证 验证代码
关于Windows日志的获取
- 获取方式
- 应用场景
- 手动获取
- 步骤说明
- 图片说明
- 自动获取
- 程序代码
- 验证
- 验证代码
- 获取情况
- EventLogEntryType
获取方式
应用场景
一般情况下,程序还没有结束之前,程序自带的日志系统会记录各种异常信息。但是在特殊情况下,程序会有闪退等情况,导致程序自带的日志系统无法记录闪退原因。因此,获取Windows系统日志去确认程序闪退等异常的原因则十分有用且必要。
手动获取
步骤说明
此电脑==》管理==》事件查看器==》Windows日志==》应用程序==》筛选当前日志==》根据应用名称进行筛选
图片说明
自动获取
程序代码
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
}