Customizing event logging

By handling events, you can customize how the system logs records into its Event log.

The system raises the following types of related events:

  • EventLogEvents.LogEvent.Before - allows you to customize the data logged for events or cancel logging for certain types of events.
  • EventLogEvents.LogEvent.After - allows you to perform custom actions after events are successfully logged, for example duplicate certain types of events into a custom log.
Note: Performing demanding operations during event logging can have a negative impact on the performance of the website (particularly on sites under heavy load where a large number of events is logged).

Example

The following example demonstrates how to disable logging for events of a specific type and modify the Description text for certain events.

  1. Open your Kentico project in Visual Studio (using the WebSite.sln or WebApp.sln file).
  2. Create a custom module class.
    • Either add the class into a custom project within the Kentico solution (recommended) or directly into the Kentico web project (into a custom folder under the CMSApp project for web application installations, into the App_Code folder for web site installations).
  3. Override the module's OnInit method and assign a handler method to the EventLogEvents.LogEvent.Before event.
  4. Perform the required actions within the handler method.
    • Access the data of the logged event through the Event property of the handler's LogEventArgs parameter.
    • To cancel the logging of an event, call the Cancel method of the handler's LogEventArgs parameter.
using CMS;

using CMS.DataEngine;
using CMS.EventLog;
using CMS.Base;

// Registers the custom module into the system
[assembly: RegisterModule(typeof(CustomInitializationModule))]

public class CustomInitializationModule : Module
{
	// Module class constructor, the system registers the module under the name "CustomInit"
	public CustomInitializationModule()
		: base("CustomInit")
	{
	}

	// Contains initialization code that is executed when the application starts
	protected override void OnInit()
	{
		base.OnInit();

		// Assigns a handler to the LogEvent.Before event
		EventLogEvents.LogEvent.Before += LogEvent_Before;
	}

	private void LogEvent_Before(object sender, LogEventArgs e)
	{
		// Gets an object representing the event that is being logged
		EventLogInfo eventLogRecord = e.Event;

		// Cancels logging for events with the "CREATEOBJ" or "UPDATEOBJ" event codes.
		// Disables event log records notifying about the creation or update of objects in the system,
		// but still allows events related to object deletion.
		string eventCode = eventLogRecord.EventCode;
		if (eventCode.EqualsCSafe("CREATEOBJ") || eventCode.EqualsCSafe("UPDATEOBJ"))
		{
			e.Cancel();
		}

		// Adds a custom message to the Description field for events of the Information type
		if (eventLogRecord.EventType.EqualsCSafe("I"))
		{
			eventLogRecord.EventDescription += " Custom message";
		}
	}
}