You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.5 KiB
C#

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();
}
/// <summary>
/// 写入Windows 系统日志
/// 需要引入 System.Diagnostics.EventLog 包
/// (需要管理员权限运行)
/// </summary>
static void WriteWindowsOSLog()
{
//只有Windows系统才可以。
if (OperatingSystem.IsWindows())
{
var sourceName = "AndySource";
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);
}
}
}