.NET Logging Library

$ 28.95


"I cannot describe how satisfied I am by your components! To tell you the truth I started by purchasing the Logging Library but I was so amazed by your products that a couple of days later I also purchased the whole suite!
I totally love all your products and will spread the word for your company!
Keep up the excellent work you are doing!

Dimitrios Lyras

The .NET Logging Library is the cutting edge of logging. It is more powerful than Log4Net, NLog, or SmartInspect and yet easier to use.

Of course it has all the usual logging capabilities of the other guys including; a wide variety of targets, log levels, filtering, real time monitoring, binary file logging with attachments, and compatibility with log viewers like Chainsaw, Log4View, YALV, LogExpert, and YourLog4Net Viewer.

Say goodbye to editing complex logging XML configuration files. The .NET Logging Library has a GUI configuration editor that can edit external config files and your app.config or web.config files. Setup is literally a minute, versus a half an hour of searching for an appender format and then hoping you didn't make a typo.

We know that you have high maintenance users that cause things to happen in your application that make you scratch your head. That is why the .NET Logging Library can do things like automatically increasing the logging level when an exception occurs. Have a problem user? You can create a logging target for a that specific user by simply re-deploying a new configuration file. If needed, the configuration can be overriden at runtime by your application and then saved. You could easily create an admin page in your application to change the configuration. No other framework does that.

Here are some other differences that will make your life easier. When a junior developer creates an infinite loop and there are thousands of duplicate messages logged, the .NET Logging Library can be configured to ignore duplicate messages. By default, file targets automatically discard older messages after reaching 10,000 entries. When logging to a database, it will automatically create the logging table and the corresponding stored procedure to log to the database and roll database entries. No other framework can roll when logging to a database.

The .NET Logging Libary is so easy to use, you can log with a single line of code using the default configuration:
Log.Debug(“This is a test”)

It supports all .NET project types including .NET Framework .NET Core, Mono, Xamarin iOS, Xamarin Mac, Xamarin Android, UWP, Unity, .NET 5, and .NET 6. The logger can be used with any .NET language including VB.NET and C#. Download the full list of features.

While it can be purchased separately, this product is also included in the Gold Suite. Gold Suite subscribers receive all product updates and all new products as part of a yearly subscription. It is the best value in the industry.



Feature Description
Easy to Use The .NET Logging Library is implemented as a static class. Logging can be performed with a single line of code. There is no need to wrap an instantiated class in a singleton. However there is also a ConcreteLog class that is ready for mocking with RhinoMocks or Moq.
Robust When asynchronous logging is used, the .NET Logging Library is over three times as fast as Log4Net. The Logger asynchronously processes all messages in a lower priority thread so that it does not affect the performance of your application.
Multiple Destinations Log to multiple simultaneous destinations including the Console, Debug Window, Response, Trace, ASPTrace, the Event Log, multiple databases, email, and files and more. If desired, multithreaded applications can log to a single file. Inherit from BaseTarget to create your own Custom Target.
Performance Metrics The Logging software automatically calculates the difference in milliseconds between the current logged message and the last message that was logged. The Logger also has the ability to track call stack performance. By adding a few logging calls it is easy to see the execution time of sections of code. Simply do a Log.PushMethod() and Log.PopMethod()
Run time properties Unlike the free logging frameworks that are available, the .NET Logging Library has the ability to modify any setting including logging targets, logging levels, and output formatting even while logging is occuring. Other logging frameworks require the external modification of lengthy configuration files. The logging software supports configuration files, including creating default configuration files, but their usage is not required.
Log Rolling The logging tool supports not only discarding old log entries in files, it also supports log rolling of database and event log targets. Log files can be automatically archived by size, time period or maximum log entries.
Optimized Database Logging Tables and optimized stored procedures are automatically created when logging to a database target. All that is needed is the connection string for the database.
Object Logging Log all properties of an object by using reflection. The properties are even sorted in alphabetical order.
Ignore Duplicates The logger can be set to ignore duplicate messages. This can be helpful when a component is throwing the same error multiple times. With this feature, the context of the error is preserved if rolling is enabled.
Autolevel Increase This is an option to enable all logging levels when an error occurs. When a product has been deployed to production and the end user can't remember what they did to get the error, additional logging is turned on automatically.
Asynchronous, Buffered and Synchronous Modes The synchronous mode is a lifesaver when developing console applications. Instead of using Console.Writeline, write out messages using the logger. After development is complete, the logging can be switched to use asynchronous and log to a different destination, such as the event log.
Documentation Industry standard formatted help and an easy to use demo is included.
100% Managed Code 100% managed code written in C#. No external dependencies or libraries are required.
Royalty Free Distribution Include with any .NET project royalty free.
1 Year Free Upgrades Purchase today and all upgrades are free for the next year.
60 Day Money Back Guarantee At Kellerman Software, we want you to be totally satisfied with your purchase. Receive a refund within 60 days when ordering from KellermanSoftware.com. Source code versions are non-refundable due to their nature.
Lifetime Support Lifetime E-mail technical support is included.

How does the .NET Logging Library stack up against the competition?

Download In Excel

Download a free 30 day trial today.

  • Full working version
  • Includes technical support
  • Compatible with Windows, macOS, Linux, iOS, Android and Docker.
  • Compatible with .NET Framework 3.5 and higher, .NET Core 2.0 and higher, Mono 5.4 and higher, Xamarin.iOS 10.14 and higher, Xamarin.Mac 3.8 and higher, Xamarin.Android 8.0 and higher, Universal Windows Platform 10.0.16299 and higher, Unity 2018.1 and higher, .NET 5, and .NET 6.

Download Options

In order to use the .NET Logging Library, you must meet the following system requirements.

  • Compatible with Windows, macOS, Linux, iOS, Android and Docker.
  • Compatible with .NET Framework 3.5 and higher, .NET Core 2.0 and higher, Mono 5.4 and higher, Xamarin.iOS 10.14 and higher, Xamarin.Mac 3.8 and higher, Xamarin.Android 8.0 and higher, Universal Windows Platform 10.0.16299 and higher, Unity 2018.1 and higher, .NET 5, and .NET 6.

Using the .NET Logging Library is super easy. To automatically start logging to a file and to the console simply add a reference to the KellermanSoftware.NET-Logging-Library.dll in your Visual Studio project and enter this single line of code:
Log.Debug("I am logging with only one line of code!")

Quick Start

Step 1: Configure the logger

You can configure the logger using runtime properties or using the config editor. The config editor is an easy to use GUI. The config editor has the ability to create an external log.config which is an XML file or can edit your app.config/web.config file. The two most important properties to know are the MessageFormat and the DateFormat.

Example run time property configuration:

//Clear all configuration

//Add a New Target
FileTarget fileTarget = new FileTarget("log.txt");

//Example saving to Log.Config XML file

//Example saving to app.config or web.config

Step 2: Start Logging

The configuration is loaded automatically when first used. It will look for the log.config in the current directory then it will look in the app.config or web.config

//Licensed Mode
//Log.UserName = "User Name From Receipt";
//Log.LicenseKey = "LicenseKey From Receipt";

//Option 1: Use built in static logger
Log.Debug("This is a test");

//Option 2: Create a concrete implementation
ConcreteLog logger = new ConcreteLog()
logger.Debug("This is a test");

For more information, take a look at the help file.

Q: How do I use my license key?
Log.UserName = "John Smith";
Log.LicenseKey = "asiuraweruiawer==";

Q: I lost my license key how do I retrieve it?
A: Go to your account

Q: I lost my software how do I retrieve it?
A: Go to downloads

Q: Where can I download the latest version of my software?
A: Click the download tab.

Q: How does the licensing work?
A: Each developer that uses the logging library must have a license. You may distribute your application to end users royalty free or use it on an unlimited number of servers. A site license is for all the developers in a single building. An enterprise license would be for numerous developers in multiple buildings.

Q: Does the logging library work with ASP.NET?
A: Yes, the .NET Logging Library works with any .NET project type.

Q: What happens when the trial expires?
A: All messages that are logged will say the trial is expired.

Q: Is there a list of all the variables that can be used in the log format?
A: Yes, see the help file under the log format property.

Q: How do I get the thread name instead of the thread id to print out in the log?
A: In the first line of your application put: System.Threading.Thread.CurrentThread.Name = "MyThreadName"; The Logger will pick up this information automatically.

Q: How accurate are the performance metrics?
A: It will be relative to the performance of your machine. On our test machine which is 3Ghz, the performance metrics are accurate to within 1ms.

Q: Do you provide a .sql file that I can use to create the table structure required for logging to SQL Server/Oracle?
A: The table creation and stored procedure creation is totally automatic. Set the connection string for the database you want to log to and turn on the logging for the database. When the first entry is logged, it will create the table and the stored proc automatically.


"Tired of all the configuration necessary for Logging? Need to log to different destinations, file logs, event logs, SQL tables, email? Then give Kellerman Logging a try. Do you remember the days before the microwave oven, and can you imagine life without one now? That’s how easy it is to use and deploy this logging library. An incredibly easy to use, asynchronous, logging system that fits all NET platforms and necessities. Beware, if you try it you’ll be hooked!"

Martin Hart
Memory Soft

Date Version Description
8/8/2006 1.0 .NET component that logs messages to multiple destinations and tracks performance. Kellerman Logger is faster and easier to use than Log4Net.
8/10/2006 1.0 .NET component that logs messages to multiple destinations and tracks performance. Kellerman Logger is faster and easier to use than Log4Net.
11/11/2006 1.03 .NET component that logs messages to multiple destinations and tracks performance. New features include the ability to log to custom destinations and log internal logging errors to the console, the event log, application directory file log, and e-mail.
2/3/2007 1.05 .NET component that logs messages to multiple destinations and tracks performance. This latest update includes a VB.NET Demo and enhancements to track configuration errors in ASP.NET.
2/15/2007 1.06 .NET component that logs messages to multiple destinations and tracks performance. This update fixes the "Type Initialization Error" due to an incorrect GAC installation.
5/26/2007 1.07 .NET component that logs messages to multiple destinations and tracks performance. This new version includes the ability to log to CSV files, HTML files, and XML files. Console output can now be ANSI colored. Several file log rolling features were also added; including rolling by size, rolling by time period and rolling by maximum log entries. The calling method is now logged.
7/26/2007 1.12 .NET component that logs messages to multiple destinations and tracks performance. This new version includes the ability to run under medium trust web servers. WinForm GAC usage problem was corrected and WinForm flushing problem was corrected.
10/6/2007 1.15 .NET component that logs messages to multiple destinations and tracks performance. This new version fixes a sticky thread issue when logging under WinForms.
10/29/2007 1.17 .NET component that logs messages to multiple destinations and tracks performance. By customer request, the logger does not automatically create a configuration file in the local directory. This allows for shared configuration files.
1/31/2008 1.18 .NET component that logs messages to multiple destinations and tracks performance. This version fixes a minor thread state issue.
5/11/2008 1.22 .NET component that logs messages to multiple destinations and tracks performance. This update includes improved synchronous performance and automatic web service detection. This version fixes several minor defects including: C++ main method, web service response.write issue, web service session variable loss, and extra CRLF when logging to SQL Server.
5/14/2009 1.24 By customer request a new DateFormat option has been added that allows date formatting for file targets.
12/30/2010 1.33 Fixes an issue when doing multithreaded logging from Microsoft CRM.
2/24/2011 1.35 Fixes a licensing issue in medium trust environments.
6/27/2011 1.37 This fixes a trial mode issue for the .NET 4.0 framework in a medium trust environment.
8/17/2012 1.39 By customer request, the Logging Library now has the ability to specify EmailUseSsl and EmailPort to log securely to an email provider.
3/18/2013 1.40 The demo has been changed to require administrator rights to log to the event log under Windows 7 and higher.
4/27/2013 2.00 Kellerman Software is proud to announce the availability of the .NET Logging Library Version 2. This major version is a complete rewrite which allows greater performance, flexibility and ease of use. Major new features include individual logging levels per target, filtering, real time log monitoring with several popular viewers, ability to use a web.config/app.config file, binary file logging with attachments, a log viewer, a config editor, and formats compatible with several third party log viewers. The help file has also been completely rewritten to be more, well helpful. :)
5/18/2013 2.01 This release fixes an issue with loading configuration from a web.config. Also includes a customer requested feature UseDateTimeOffset for SQL Server.
6/1/2013 2.02 This release fixes an issue with the SkipFrames property.
6/3/2013 2.03 By customer request, these methods have been added to create formatted messages similar to string.format; DebugEx, InfoEx, WarnEx, ErrorEx, FatalEx, and LogExceptionEx. A new property has been added called MessagePrefix which will prepend all messages with the specified string.
6/25/2013 2.05 This update fixes three issues, Log Viewer and Config Editor build, SkipFrames wrapping, and null LineNumber when building in release mode.
8/12/2013 2.06 By request a target for Microsoft SQL Server Azure has been added.
10/15/2013 2.07 It now detects corrupted binary log files. By request it allows the user to specify |DataDirectory|, SpecialFolder, or Server.MapPath for file log paths.
11/29/2013 2.08 New build for .NET Framework 4.5 and 4.5.1.
12/17/2013 2.09 By customer request, the EventLogTarget now has the ability to specify the EventLogSource.
10/4/2014 2.11 By customer request, targets for WPF Rich Textbox and WPF Textbox were added.
10/19/2014 2.12 This update fixes a compatibility issue with projects using ClickOnce deployments.
1/20/2015 2.14 This update fixes a compatibility issue with SQL Server when SQL Server is set to case sensitive using database collation.
3/14/2015 2.15 Defect fix for config editor minimum logging levels.
2/24/2016 2.20 Builds for .NET Framework 4.5.2 and 4.6. The library remains 100% managed code but is now compatible with COM.
8/3/2016 2.22 By customer request a new feature was created to override the CurrentAppDomain with Configuration.OverrideCurrentAppDomain.
10/22/2016 2.24 By customer request, OriginalException and OriginalObject properties have been added to the LogEntry class for use with Custom Loggers.
6/11/2017 2.30 By customer request, it is now possible to override all the values in the log entry by doing a LogCustomLogEntry.
5/21/2018 2.35 By customer request, new SybaseOdbcTarget
2/23/2019 2.37 Fix for closing connection on dispose of SQL Server Logging Target.
5/1/2019 2.38 Fix for file archiving by time.
9/12/2019 2.39 New feature requested by customer: support for comma delimited wildcards in filters also more advanced wildcards. It also adds builds for .NET Framework 4.7, 4.7.1, 4.7.2, and 4.8
9/14/2019 2.40 Builds for .NET Framework 4.7, 4.7.1, 4.7.2, and 4.8.
9/26/2020 3.00 New features: returns which targets were logged and returns last inserted id for database logging. Now compatible with .NET Standard 2.0, Mono 5.4, Xamarin.IOS 10.14, Xamarin.Mac 3.8, Xamarin.Android 8.0, UWP 10.0.16299 or Unity 2018.1.
12/18/2020 3.16 Fix for GetCurrentDirectory Exception under Xamarin Android.
11/7/2021 3.18 Fix for loading Log.Config file.
12/19/2021 3.20 Fixes for multiple targets with MaxDuplicates, file log rolling performance, and close connection on ResetConfiguration.
6/29/2022 3.24 New feature: support for UseDefaultCredentials for EmailTarget.
7/28/2022 3.24 Fix Object Reference Error for Xamarin Forms.
7/12/2023 3.27 Fix for discarding max log entries when logging asynchronously.