.NET Logging Library
Track application activity and errors, to make your life easier.
"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!
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 ASP.NET MVC, Webforms, Winforms, WPF, WCF, Windows Services, and Web Services. 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.
|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 except for the .NET Framework 3.5|
|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 a free 30 day trial today.
- Full working version
- Includes technical support
- Works with .NET 3.5 and higher
In order to use the .NET Logging Library, you must meet the following system requirements.
- Windows XP with SP2, Windows Vista, Windows 7, Windows 8, Windows 10, Windows Server 2003, Windows Server 2008, Windows Server 2012, or Windows Server 2016
- .NET Framework 3.5, 4.0, 4.5, 4.5.1, or 4.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!")
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
//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 logging libary works with ASP.NET, Winforms, Web Services, and Windows Services
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!"
|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. now.|
|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. now.|
|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. now.|
|1/31/2008||1.18||.NET component that logs messages to multiple destinations and tracks performance. This version fixes a minor thread state issue. now.|
|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. now.|
|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.|