Repository navigation
-
What is NLog?
- NLog is a free and open source library which helps to write log messages.
-
Why should I use a log library? I can just do
file.WriteLine()- Beside writing to files, you can write to many different targets, like databases, event viewer, trace etc.
- The output is templatable with many predefined template values.
- With a simple configuration file you can decide at runtime (after deployment), what to log and where! No need to restart the program or recycle the app pool!
-
Why should I use NLog?
- NLog is fully written in C#, has many years of experience and is easy to extend!
-
Is it free?
- Yes, it's licensed under the BSD license, so you can use it in commercial (closed source) programs without problems.
-
Show me the magic!
- Check the tutorial to get started!
-
Just show me a config example
-
I can't see anything?!
- NLog not working as expected? Check the troubleshooting guide. If you think it's a bug, please check contributing.md and create a GitHub issue!
-
I'm missing important stuff!
- You can send a feature request, but do you know you can extend NLog with a few lines of code?
-
I'm missing the trace and debug logs in ASP.NET Core 2
-
How do I upgrade to NLog 4.x?
- Check the 4.0 release post, there are some breaking changes.
- Update all the NLog packages. The latest stable version is recommend.
- When upgrading from NLog 4.1.0, please the next question.
-
I have trouble updating NLog from 4.1.0
- We take semver very serious! Because NLog is strong named, it's important to keep the assembly version of all major versions the same, otherwise every library build on 4.0.0 should be recompiled for every other 4.x release (4.1, 4.2 etc) - which is unwanted because of semver.
In NLog 4.1.0 there was a mistake in the assembly version, which has been fixed in 4.1.1. Upgrading from NLog 4.1.0 to another version can give issues when using NuGet. This will result in the following error:
Could not load file or assembly 'NLog' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
If you upgrade, remove or alter the
, as explained at the 4.1.1 news post. - We take semver very serious! Because NLog is strong named, it's important to keep the assembly version of all major versions the same, otherwise every library build on 4.0.0 should be recompiled for every other 4.x release (4.1, 4.2 etc) - which is unwanted because of semver.
-
Should I use Common Logging?
-
That's up to you. It has it pros and cons. The greatest advantage is that you can easily switch between logging implementations (NLog, Log4Net, EntLib). This can be very important if you’re writing a library yourself, then the user who's using your library can choose which implementation to use.
-
There are some downsides:
- You are limited in some features, or some features aren't available at all (like context classes or event properties)
- The performance is a bit lower.
- The platform support is lower. For example, there is no Xamarin support or a specialized .Net 4.5 build
- The progress is limited by NLog and Common logging.
-
-
Which Common Logging version should I use?
- As you may have noticed the latest version of Common Logging doesn't match the latest version of NLog - the latest Common Logging is build to NLog 4.1. But that is not a problem! Since NLog 4.0 the assembly version is fixed to
4.0.0.0and because follow semver, you can use the latest version of NLog with Common.Logging.NLog41.
- As you may have noticed the latest version of Common Logging doesn't match the latest version of NLog - the latest Common Logging is build to NLog 4.1. But that is not a problem! Since NLog 4.0 the assembly version is fixed to
-
I'm writing a library who's using NLog. Should I update when NLog has an update?
- If you don't use the latest additions, then you should only update every NLog major version. As mentioned at the Common Logging version, we will keep the assembly version fixed. The end-user don't need
-magic! So in short: your library should target NLog 4.0 and in the future NLog 5.0.
- If you don't use the latest additions, then you should only update every NLog major version. As mentioned at the Common Logging version, we will keep the assembly version fixed. The end-user don't need
-
How do I write custom Targets, layouts and layout renderers?
-
How could I combine programmatic configuration with XML configuration?
- Troubleshooting Guide - See available NLog Targets and Layouts: https://nlog-project.org/config
- Getting started
- How to use structured logging
- Troubleshooting
- FAQ
- Articles about NLog
-
All targets, layouts and layout renderers
Popular: - Using NLog with NLog.config
- Using NLog with appsettings.json