How to use Custom Logging in C#

Custom logging refers to the practice of implementing a logging system tailored to the specific needs and requirements of an application or system. It involves creating and using log files to record information, events, and messages generated by the software during its operation.

Get started with IronPDF

Start using IronPDF in your project today with a free trial.

First Step:
green arrow pointer



Custom Logging Example

To utilize the custom logging feature, change the LoggingMode property to LoggingModes.Custom. Afterward, assign the CustomLogger property to the custom logger class that you have created.

:path=/static-assets/pdf/content-code-examples/how-to/custom-logging-custom-logging.cs
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.Custom;
IronSoftware.Logger.CustomLogger = new CustomLoggerClass("logging");
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.Custom
IronSoftware.Logger.CustomLogger = New CustomLoggerClass("logging")
$vbLabelText   $csharpLabel

IronPdf logs will be directed to the custom logger object. The messages will remain identical to those in the IronPdf logger; they will simply be relayed to the custom logger. How the custom logger manages the messages will be determined by the custom logger designer. Let's use the following custom logger class as an example.

:path=/static-assets/pdf/content-code-examples/how-to/custom-logging-custom-logging-class.cs
public class CustomLoggerClass : ILogger
{
    private readonly string categoryName;

    public CustomLoggerClass(string categoryName)
    {
        this.categoryName = categoryName;
    }

    public IDisposable BeginScope<TState>(TState state)
    {
        return null;
    }

    public bool IsEnabled(LogLevel logLevel)
    {
        return true;
    }

    public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
    {
        if (!IsEnabled(logLevel))
        {
            return;
        }

        // Implement your custom logging logic here.
        string logMessage = formatter(state, exception);

        // You can use 'logLevel', 'eventId', 'categoryName', and 'logMessage' to log the message as needed.
        // For example, you can write it to a file, console, or another destination.

        // Example: Writing to the console
        Console.WriteLine($"[{logLevel}] [{categoryName}] - {logMessage}");
    }
}
Public Class CustomLoggerClass
	Implements ILogger

	Private ReadOnly categoryName As String

	Public Sub New(ByVal categoryName As String)
		Me.categoryName = categoryName
	End Sub

	Public Function BeginScope(Of TState)(ByVal state As TState) As IDisposable
		Return Nothing
	End Function

	Public Function IsEnabled(ByVal logLevel As LogLevel) As Boolean
		Return True
	End Function

	Public Sub Log(Of TState)(ByVal logLevel As LogLevel, ByVal eventId As EventId, ByVal state As TState, ByVal exception As Exception, ByVal formatter As Func(Of TState, Exception, String))
		If Not IsEnabled(logLevel) Then
			Return
		End If

		' Implement your custom logging logic here.
		Dim logMessage As String = formatter(state, exception)

		' You can use 'logLevel', 'eventId', 'categoryName', and 'logMessage' to log the message as needed.
		' For example, you can write it to a file, console, or another destination.

		' Example: Writing to the console
		Console.WriteLine($"[{logLevel}] [{categoryName}] - {logMessage}")
	End Sub
End Class
$vbLabelText   $csharpLabel

In this case, I have prefixed the log messages with additional information.

Console window

Ready to see what else you can do? Check out our tutorial page here: Addtional Features

Frequently Asked Questions

What is custom logging in C#?

Custom logging in C# refers to creating a logging system tailored to the specific needs of an application. It involves using log files to record information and events generated by the software during its operation.

How do I get started with custom logging?

To get started with custom logging using IronPDF, download IronPDF from NuGet, set the LoggingMode property to LoggingModes.Custom, assign your custom logger object to the CustomLogger property, and output the log messages to view the logs.

How do I set the logging mode to custom?

To set the logging mode to custom in IronPDF, assign the LoggingMode property of the ChromePdfRenderer instance to LoggingModes.Custom.

What is the purpose of the CustomLogger property?

The CustomLogger property in IronPDF is used to assign your custom logger object. This allows all log messages to be forwarded to the custom logger instead of the default IronPDF logger.

Can you provide an example of a custom logger class?

Yes, an example of a custom logger class involves implementing the ILogger interface from IronPDF and defining methods like LogInformation, LogWarning, and LogError, which can handle different types of log messages.

What interface must a custom logger implement?

A custom logger must implement the ILogger interface from IronPDF to ensure it can handle log messages appropriately.

How does custom logging enhance my application?

Custom logging enhances your application by providing tailored logging solutions that meet specific application requirements, improving monitoring, debugging, and maintenance.

What kind of log messages can a custom logger handle?

A custom logger can handle various log messages, including informational, warning, and error messages, allowing for comprehensive logging tailored to the application's needs.

Chaknith related to Custom Logging Example
Software Engineer
Chaknith is the Sherlock Holmes of developers. It first occurred to him he might have a future in software engineering, when he was doing code challenges for fun. His focus is on IronXL and IronBarcode, but he takes pride in helping customers with every product. Chaknith leverages his knowledge from talking directly with customers, to help further improve the products themselves. His anecdotal feedback goes beyond Jira tickets and supports product development, documentation and marketing, to improve customer’s overall experience.When he isn’t in the office, he can be found learning about machine learning, coding and hiking.