In the .NET framework you have the System.Diagnostics.EventLog class which provides static methods for working with the Windows event log.
In order to write a new entry to the event log, you can use the WriteEntry method as follows:
using System.Diagnostics;
...
EventLog.WriteEntry("My Application", "My message", EventLogEntryType.Error);
The EventLogEntryType enumeration has the following members: Error, FailureAudit, Information, SuccessAudit, Warning.
If the event source “My Application” doesn’t exist, then the WriteEntry method will try to create it. However, if the current process runs under a non-admin account, then this may fail due to lack of permissions. In that case, you can create a console application, which creates the event source by using the CreateEventSource method:
using System;
using System.Diagnostics;
namespace CreateEventSource
{
class Program
{
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("The event source name is required as an argument.");
return;
}
string source = args[0];
try
{
if (!EventLog.SourceExists(source))
{
EventLog.CreateEventSource(source, "Application");
Console.WriteLine("The event source {0} was successfully created.", source);
}
else
{
Console.WriteLine("The event source {0} already exists.", source);
}
}
catch(Exception ex)
{
Console.WriteLine("The event source {0} was not created due to: \n{1}", source, ex.ToString());
}
}
}
}
During installation of your application, you run this console application to register the necessary event source(s). Make sure you are logged in as the admin user when you run it.
