イベントログのソース作成は1度でよいです。
EventLog.CreateEventSource()
メソッドを呼び出すことで作成できますが、管理者権限で実行していない場合は
アクセス権限がなくエラーとなります。そのため、管理者権限で動作しないプログラムの場合は、
あらかじめコマンドでイベントログのソースを作成しておく必要があります。EventLog.WriteEntry()
メソッドを呼び出すとイベントログに書き込みできます。using System.Diagnostics;
namespace WriteEventLogNet
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string SourceName = "My Application 01";
if (EventLog.SourceExists(SourceName) == true) {
string MessageText = "メッセージです。";
int Eventid = 1001;
EventLog.WriteEntry(SourceName, MessageText, EventLogEntryType.Information, Eventid);
}
}
}
}
EventLog.SourceExists(SourceName)
メソッドでソースの存在を
確認した後、EventLog.WriteEntry()
メソッドを呼び出してイベントログに書き込みをします。eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO "My Application 01" /D "My Applicationのイベントログ"
using System.Diagnostics;
namespace WriteEventLogNet
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
string SourceName = ".NET Runtime";
if (EventLog.SourceExists(SourceName) == true) {
string MessageText = "My Applicatoin 01のメッセージです。";
int Eventid = 1001;
EventLog.WriteEntry(SourceName, MessageText, EventLogEntryType.Information, Eventid);
textBox1.Text += "イベントログに書き込みました。";
}
}
}
}
.NET Runtime
のイベントソースに書き込みます。
EventLog.SourceExists(SourceName)
メソッドでソースの存在を
確認した後、EventLog.WriteEntry()
メソッドを呼び出してイベントログに書き込みをします。using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
namespace WriteEventLogSimple
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string SourceName = "SimpleEventLog Write";
if (EventLog.SourceExists(SourceName) == false) {
EventLog.CreateEventSource(SourceName, "");
//EventLog.CreateEventSource(SourceName, "Application");
}
string Message = "イベントログの書き込みテストです。";
int Eventid = 64000;
EventLog.WriteEntry(SourceName, Message, EventLogEntryType.Information, Eventid);
}
}
}
string SourceName = "SimpleEventLog Write";
if (EventLog.SourceExists(SourceName) == false) {
EventLog.CreateEventSource(SourceName, "");
//EventLog.CreateEventSource(SourceName, "Application");
}
string Message = "イベントログの書き込みテストです。";
int Eventid = 64000;
EventLog.WriteEntry(SourceName, Message, EventLogEntryType.Information, Eventid);
System.Security.SecurityEception
例外が発生します。これは管理者権限でアプリケーションが実行されていないため、ログへの書き込みができないためです。