NLog
-
NLog 4.5
Published by 304NotModified over 6 years ago
NLog 4.5 adds structured logging and .NET Standard support/UPW without breaking changes! Also many features has been added!
List of important changes in NLog 4.5
Features:
- Support for .Net Standard 2.0 #2263 + #2402 (@snakefoot)
- Support for .Net Standard 1.5 #2341 (@snakefoot)
- Support for .Net Standard 1.3 (and UWP) #2441 + #2597 (Remember to manually flush on app suspend). (@snakefoot)
- Introduced Structured logging #2208 + #2262 + #2244 + #2544 (@snakefoot, @304NotModified, @jods4, @nblumhardt) - see https://github.com/NLog/NLog/wiki/How-to-use-structured-logging
- Json conversion also supports object properties #2179, #2555 (@snakefoot, @304NotModified)
- event-properties layout-renderer can now render objects as json #2241 (@snakefoot, @304NotModified)
- exception layout-renderer can now render exceptions as json #2357 (@snakefoot)
- Default file archive logic is now easier to use #1993 (@snakefoot)
- Introduced InstallationContext.ThrowExceptions #2214 (@rbarillec)
- WebServiceTarget - Allow configuration of proxy address #2375 (@snakefoot)
- WebServiceTarget - JsonPost with JsonLayout without being wrapped in parameter #2590 (@snakefoot)
- ${guid}, added GeneratedFromLogEvent #2226 (@snakefoot)
- TraceTarget RawWrite to always perform Trace.WriteLine independent of LogLevel #1968 (@snakefoot)
- Adding OverflowAction options to BufferingTargetWrapper #2276 (@mikegron)
- WhenRepeatedFilter - Filtering of identical LogEvents #2123 + #2297 (@snakefoot)
- ${callsite} added CleanNamesOfAsyncContinuations option #2292 (@tkhaugen, @304NotModified)
- ${ndlctiming} allows timing of ndlc-scopes #2377 (@snakefoot)
- NLogViewerTarget - Enable override of the Logger-name #2390 (@snakefoot)
- ${sequenceid} added #2411 (@MikeFH)
- Added "regex-matches" for filtering #2437 (@MikeFH)
- ${gdc}, ${mdc} & {mdlc} - Support Format parameter #2500 (@snakefoot)
- ${currentDir} added #2491 (@UgurAldanmaz)
- ${AssemblyVersion}: add type (File, Assembly, Informational) option #2487 (@alexangas)
- FileTarget: Support byte order mark #2456 (@KYegres)
- TargetWithContext - Easier to create custom NLog targets with support for MDLC and NDLC #2467 (@snakefoot)
- ${callname-filename} - Without line number #2591 (@brunotag)
- MDC + MDLC with SetScoped property support #2592 (@MikeFH)
- LoggingConfiguration AddRule includes final-parameter #2612 (@893949088)
BugFixes:
- Improve archive stability during concurrent file access #1889 (@snakefoot)
- FallbackGroup could lose log events #2265 (@frabar666)
- ${exception} - only include separator when items are available #2257 (@jojosardez)
- LogFactory - Fixes broken EventArgs for ConfigurationChanged #1897 (@snakefoot)
- Do not report wrapped targets as unused targets #2290 (@thesmallbang)
- Added IIncludeContext, implemented missing properties #2117 (@304NotModified)
- Improve logging of callsite linenumber for async-methods #2386 (@snakefoot)
- NLogTraceListener - DisableFlush is enabled by default when AutoFlush=true #2407 (@snakefoot)
- NLogViewer - Better defaults for connection limits #2404 (@304NotModified)
- LoggingConfiguration.LoggingRules is not thread safe #2393, #2418 (@snakefoot)
- Fix XmlLoggingConfiguration reloading #2475 (@MikeFH)
- Database Target now supports EntityFramework ConnectionStrings #2510 (@Misiu, @snakefoot)
- LoggingConfiguration.RemoveTarget now works while actively logging #2549 (@jojosardez, @snakefoot)
- FileTarget does not fail on platforms without global mutex support #2604 (@snakefoot)
- LoggingConfiguration does not fail when AutoReload is not possible on the platforms without FileWatcher #2603 (@snakefoot)
Performance:
- More targets has OptimizeBufferReuse enabled by default #1913 + #1923 + #1912 + #1911 + #1910 + #1909 + #1908 + #1907 + #2560 (@snakefoot)
- StringBuilderPool - Improved Layout Render Performance by reusing StringBuilders #2208 (@snakefoot)
- JsonLayout - Improved Layout Performance, by optimizing use of StringBuilder #2208 (@snakefoot)
- FileTarget - Faster byte-encoding of log messsages, by using crude Encoding.GetMaxByteCount() instead of exact Encoding.GetByteCount() #2208 (@snakefoot)
- Target - Precalculate Layout should ignore sub-layouts for complex layout (Ex Json) #2378 (@snakefoot)
- MessageLayoutRenderer - Skip
string.Format
allocation (for caching) when writing to a single target, instead format directly into output buffer. #2507 (@snakefoot)
for full list, see https://github.com/NLog/NLog/blob/master/CHANGELOG.md
for what is supported in each platform, see https://github.com/NLog/NLog/wiki/platform-support