using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Diagnostics.Tracing;
namespace LogStudy.EventLog
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("======== 事件日志学习 ========");
MinimalEventSource minimalEventSource = MinimalEventSource.Log;
minimalEventSource.Write("MiniEventSource", "--------------------------------");
var evtSource = new EventSource("AndyEvent");
evtSource.Write("AndyEvent", "sdfasdfsadfasdfasdfasdf");
DatabaseSource.Instance.OnCommandExecute("我是自定义事件日志!");
WriteWindowsOSLog();
Console.WriteLine("输入回车键,退出程序。");
Console.ReadLine();
}
///
/// 写入Windows 系统日志
/// 需要引入 System.Diagnostics.EventLog 包
/// (需要管理员权限运行)
///
///
/// 查看:Windows操作系统的 "事件查看器" --> 应用程序和服务日志 --> AndyLog:右侧日志记录列表
///
static void WriteWindowsOSLog()
{
//只有Windows系统,才可以。
if (OperatingSystem.IsWindows())
{
var sourceName = "Andy-Windows-SystemLog-Source";
var logName = "AndyLog";
if (!System.Diagnostics.EventLog.SourceExists(sourceName))
{
System.Diagnostics.EventLog.CreateEventSource(sourceName, logName);
}
// Create an EventLog instance and assign its source.
System.Diagnostics.EventLog myLog = new System.Diagnostics.EventLog();
myLog.Source = sourceName;
// Write an informational entry to the event log.
myLog.WriteEntry($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}我是执行 .net 程序写入的 Windows 操作系统事件日志!");
}
else
{
Console.WriteLine("非Windows系统,不写入操作系统事件日志!");
}
}
}
[EventSource(Name = "Samples-EventSourceDemos-EventLog")]
public sealed class MinimalEventSource : EventSource
{
private MinimalEventSource() { }
public static MinimalEventSource Log = new MinimalEventSource();
[Event(1, Message = "{0} -> {1}", Channel = EventChannel.Admin)]
public void Load(long baseAddress, string imageName)
{
WriteEvent(1, baseAddress, imageName);
}
}
}