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.

81 lines
2.7 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;
2 years ago
minimalEventSource.Write("MiniEventSource", "--------------------------------");
var evtSource = new EventSource("AndyEvent");
evtSource.Write("AndyEvent", "sdfasdfsadfasdfasdfasdf");
DatabaseSource.Instance.OnCommandExecute("我是自定义事件日志!");
WriteWindowsOSLog();
2 years ago
Console.WriteLine("输入回车键,退出程序。");
Console.ReadLine();
}
/// <summary>
/// 写入Windows 系统日志
/// 需要引入 System.Diagnostics.EventLog 包
/// (需要管理员权限运行)
/// </summary>
2 years ago
/// <remarks>
/// 查看Windows操作系统的 "事件查看器" --> 应用程序和服务日志 --> AndyLog右侧日志记录列表
/// </remarks>
static void WriteWindowsOSLog()
{
//只有Windows系统才可以。
if (OperatingSystem.IsWindows())
{
2 years ago
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);
}
}
}