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.
- Open your Kentico project in Visual Studio (using the WebSite.sln or WebApp.sln file).
- 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).
- Override the module’s OnInit method and assign a handler method to the EventLogEvents.LogEvent.Before event.
- 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";
}
}
}