All Versions
108
Latest Version
Avg Release Cycle
47 days
Latest Release
573 days ago

Changelog History
Page 3

  • v4.7.4 Changes

    August 22, 2020

    ๐Ÿ”‹ Features

    • ๐Ÿ‘ #4076 DatabaseTarget - Added AllowDbNull for easier support for nullable parameters (#4076) (@snakefoot)

    ๐Ÿ›  Bugfixes

    • ๐Ÿ‘ป #4069 Fluent LogBuilder should suppress exception on invalid callerFilePath (#4069) (@snakefoot)

    ๐Ÿ‘Œ Improvements

    • #4073 FileTarget - Extra validation of the LogEvent-timestamp before checking time to archive (#4073) (@snakefoot)
    • ๐Ÿ‘€ #4068 FileTarget - Improve diagnostic logging to see reason for archiving (@snakefoot)
  • v4.7.3 Changes

    July 31, 2020

    ๐Ÿ”‹ Features

    ๐Ÿ›  Bugfixes

    • ๐Ÿง #4011 LocalIpAddressLayoutRenderer - IsDnsEligible and PrefixOrigin throws PlatformNotSupportedException on Linux (#4011) (@snakefoot)

    ๐Ÿ‘Œ Improvements

    • #4057 ObjectReflectionCache - Reduce noise from properties that throws exceptions like Stream.ReadTimeout (#4057) (@snakefoot)
    • ๐Ÿ‘ #4053 MessageTemplates - Changed Literal.Skip to be Int32 to support message templates longer than short.MaxValue (#4053) (@snakefoot)
    • #4043 ObjectReflectionCache - Skip reflection for Stream objects (#4043) (@snakefoot)
    • #3999 LogFactory Shutdown is public so it can be used from NLogLoggerProvider (#3999) (@snakefoot)
    • #3972 Editor config with File header template (#3972) (@304NotModified)

    ๐ŸŽ Performance

    • #4058 FileTarget - Skip delegate capture in GetFileCreationTimeSource. Fallback only necessary when appender has been closed. (#4058) (@snakefoot)
    • #4021 ObjectReflectionCache - Reduce initial memory allocation until needed (#4021) (@snakefoot)
    • ๐Ÿšš #3977 FilteringTargetWrapper - Remove delegate allocation (#3977) (@snakefoot)
  • v4.7.2 Changes

    May 18, 2020

    ๐Ÿ›  Bugfixes

    • #3969 FileTarget - ArchiveOldFileOnStartup not working together with ArchiveAboveSize (@snakefoot)

    ๐Ÿ‘Œ Improvements

  • v4.7.1 Changes

    May 15, 2020

    ๐Ÿ”‹ Features

    • #3871 LogManager.Setup().LoadConfigurationFromFile("NLog.config") added to fluent setup (@snakefoot + @304NotModified)
    • #3909 LogManager.Setup().GetCurrentClassLogger() added to fluent setup (@snakefoot + @304NotModified)
    • ๐Ÿ”Š #3861 LogManager.Setup().SetupInternalLogger(s => s.AddLogSubscription()) added to fluent setup (@snakefoot + @304NotModified)
    • #3891 ColoredConsoleTarget - Added Condition option to control when to do word-highlight (@snakefoot)
    • #3915 Added new option CaptureStackTrace to ${stacktrace} and ${callsite} to skip implicit capture by Logger (@snakefoot)
    • ๐Ÿ‘€ #3940 Exception-LayoutRenderer with new option BaseException for rendering innermost exception (@snakefoot)

    ๐Ÿ‘Œ Improvements

    • #3857 FileTarget - Batch write to filestream in max chunksize of 100 times BufferSize (@snakefoot)
    • ๐ŸŒฒ #3867 InternalLogger include whether NLog comes from GlobalAssemblyCache when logging NLog version (@snakefoot)
    • ๐Ÿ‘ #3862 InternalLogger LogToFile now support ${processdir} to improve support for single-file-publish (@snakefoot)
    • #3877 Added ${processdir} that matches ${basedir:processDir=true} for consistency with InternalLogger (@snakefoot)
    • ๐Ÿ‘ #3881 Object property reflection now support IReadOnlyDictionary as expando object (@snakefoot)
    • #3884 InternalLogger include more details like FilePath when loading NLog.config file (@snakefoot)
    • ๐Ÿ‘ #3895 Added support for Nullable when doing conversion of property types (@304NotModified)
    • โš  #3896 InternalLogger Warnings when skipping unrecognized LayoutRenderer options (@snakefoot)
    • #3901 MappedDiagnosticsLogicalContext - SetScoped with IReadOnlyList also for Xamarin (@snakefoot)
    • #3904 Object property reflection automatically performs ToString for System.Reflection.Module (@snakefoot)
    • ๐Ÿง #3921 Improve ${basedir:fixtempdir=true} to work better on Linux when TMPDIR not set (@snakefoot)
    • #3928 NetworkTarget respect MaxQueueSize for http- / https-protocol (@snakefoot)
    • #3930 LogFactory.LoadConfiguration() reports searched paths when throwing FileNotFoundException (@304NotModified)
    • ๐Ÿง #3949 ReplaceNewLines-LayoutRenderer will also remove windows newlines on the Linux platform (@Silvenga)

    ๐Ÿ›  Bugfixes

    • #3868 SplitGroup Target Wrapper should not skip remaining targets when single target fails (@snakefoot)
    • #3918 ColoredConsoleTarget - Fix bug in handling of newlines without word-highlight (@snakefoot)
    • #3941 ${processid} will no longer fail because unable to lookup ${processdir} on Mono Android (@snakefoot)

    ๐ŸŽ Performance

    • #3855 FileTarget - Skip checking file-length when only using ArchiveEvery (@snakefoot)
    • #3898 ObjectGraphScanner performs caching of property reflection for NLog config items (@snakefoot)
    • #3894 Condition expressions now handles operator like '==' without memory boxing (@snakefoot)
    • #3903 ObjectGraphScanner should only check for layout-attributes on Layouts and LayoutRenderers (@snakefoot)
    • ๐Ÿ“œ #3902 MessageTemplate parsing of properties skips unnecessary array allocation (@snakefoot)
  • v4.7 Changes

    March 20, 2019

    ๐Ÿ”‹ Features

    • ๐Ÿ”ง #3686 + #3740 LogManager.Setup() allows fluent configuration of LogFactory options (@snakefoot + @304NotModified)
    • 0๏ธโƒฃ #3610 LogManager.Setup().SetupSerialization(s => s.RegisterObjectTransformation(...)) for overriding default property reflection (@snakefoot + @304NotModified + @Giorgi + @mmurrell)
    • #3787 LogManager.Setup().SetupExtensions(s => s.RegisterConditionMethod(...)) can use lambda methods and not just static methods (@snakefoot)
    • #3713 ${level:format=FullName} will expand Info + Warn to their full name (@snakefoot)
    • ๐Ÿ‘ #3714 + #3734 FileTarget - Supports MaxArchiveDays for cleanup of old files based on their age (@snakefoot)
    • #3737 + #3769 Layout.FromMethod to create Layout directly from a lambda method (@snakefoot)
    • ๐Ÿ“œ #3771 Layout.FromString to create Layout directly from string along with optional parser validation (@snakefoot)
    • #3793 ${dir-separator} for rendering platform specific directory path separator (@304NotModified)
    • ๐Ÿ‘ #3755 FileTarget - Supports ArchiveOldFileOnStartupAboveSize for cleanup of existing file when above size (@Sam13)
    • #3796 + #3823 InternalLogger - Added LogMessageReceived event (@304NotModified + @snakefoot)
    • #3829 DatabaseTarget - Assign connection properties like SqlConnection.AccessToken (@304NotModified + @snakefoot)
    • #3839 DatabaseTarget - Assign command properties like SqlCommand.CommandTimeout (@snakefoot)
    • ๐ŸŒฒ #3833 ${onHasProperties} for only rendering when logevent includes properties from structured logging (@snakefoot)

    ๐Ÿ‘Œ Improvements

    • #3521 XmlLoggingConfiguration - Marked legacy constructors with ignoreErrors parameter as obsolete (@snakefoot)
    • ๐Ÿ‘ #3689 LoggingConfiguration - Perform checking of unused targets during initialization for better validation (@snakefoot)
    • ๐ŸŒฒ #3704 EventLogTarget - Improve diagnostics logging when using dynamic EventLog source (@snakefoot)
    • ๐Ÿ‘ #3706 ${longdate} now also supports raw value for use as DatabaseTarget parameter with DbType (@snakefoot)
    • #3728 SourceLink for GitHub for easy debugging into the NLog source code (@304NotModified)
    • #3743 JsonLayout - EscapeForwardSlash now automatically applies to sub-attributes (@snakefoot)
    • #3742 TraceTarget - Introduced EnableTraceFail=false to avoid Environment.FailFast (@snakefoot)
    • ๐Ÿ“œ #3750 ExceptionLayoutRenderer - Improved error message when Format-token parsing fails (@snakefoot)
    • 0๏ธโƒฃ #3747 AutoFlushWrapper - Set AutoFlush=false for AsyncTaskTarget by default (@snakefoot)
    • #3754 LocalIpAddressLayoutRenderer - Higher priority to network-addresses that has valid gateway adddress (@snakefoot)
    • #3762 LogFactory - Flush reports to InternalLogger what targets produces timeouts (@snakefoot)

    ๐Ÿ›  Bugfixes

    • #3758 LogFactory - Fix deadlock issue with AutoReload (@snakefoot)
    • ๐Ÿ›  #3766 JsonLayout - Fixed ThreadAgnostic to correctly capture context when using nested JsonLayout (@snakefoot)
    • ๐Ÿ›  #3700 ExceptionLayoutRenderer - Fixed so Format option HResult also works for NetCore (@snakefoot)
    • #3761 + #3784 Log4JXml Layout will render NDLC + NDC scopes in correct order (@adanek + @304NotModified)
    • ๐Ÿ‘ป #3821 Logger - Added exception handler for CallSite capture for platform that fails to capture StackTrace (@snakefoot)
    • ๐Ÿ›  #3835 StringSplitter - Fixed quote handling when reading elements for config list-properties (@snakefoot)
    • ๐Ÿ‘€ #3828 Utilities: fix ConversionHelpers.TryParseEnum for white space (@304NotModified)

    ๐ŸŽ Performance

    • ๐Ÿ”’ #3683 ObjectGraphScanner - Avoid holding list.SyncRoot lock while scanning (@snakefoot)
    • #3691 FileTarget - ConcurrentWrites=true on NetCore now much faster when archive enabled (@snakefoot)
    • #3694 + #3705 JsonConverter - Write DateTime directly without string allocation (@snakefoot)
    • ๐Ÿšš #3692 XmlLayout - Removed unnecessary double conversion to string (@snakefoot)
    • #3735 WebServiceTarget - Reduced memory allocations by removing unnecessary delegate capture (@snakefoot)
    • #3739 NetworkTarget - Reduced memory allocation for encoding into bytes without string allocation (@snakefoot)
    • 0๏ธโƒฃ #3748 AsyncTaskTarget - Skip default AsyncWrapper since already having internal queue (@snakefoot)
    • #3767 Mark Condition Expressions as ThreadSafe to improve concurrency in Layouts (@snakefoot)
    • ๐ŸŽ #3764 DatabaseTarget - Added IsolationLevel option that activates transactions for better batching performance (@snakefoot)
    • ๐Ÿ›  #3779 SimpleLayout - Assignment of string-reference with null-value will translate into FixedText (@304NotModified)
    • โฑ #3790 AsyncWrapper - Less aggressive with scheduling timer events for background writing (@snakefoot)
    • #3830 Faster assignment of properties accessed through reflection (@304NotModified)
    • ๐Ÿ‘ #3832 ${replace} - Faster search and replace when not explicitly have requested regex support (@snakefoot)
    • #3828 Skip need for Activator.CreateInstance in DbTypeSetter (@304NotModified)
  • v4.6.8 Changes

    November 04, 2019

    ๐Ÿ›  Bugfixes

    • #3566 DatabaseTarget - Auto escape special chars in password, and improve handling of empty username/password (@304NotModified)
    • ๐Ÿ›  #3584 LoggingRule - Fixed IndexOutOfRangeException for SetLoggingLevels with LogLevel.Off (@snakefoot)
    • #3609 FileTarget - Improved handling of relative path in ArchiveFileName (@snakefoot)
    • ๐Ÿ›  #3631 ExceptionLayoutRenderer - Fixed missing separator when Format-value gives empty result (@brinko99)
    • #3647 ${substring} - Length should not be mandatory (@304NotModified)
    • ๐Ÿ›  #3653 SimpleLayout - Fixed NullReferenceException in PreCalculate during TryGetRawValue optimization (@snakefoot)

    ๐Ÿ”‹ Features

    • ๐Ÿ”ง #3578 LogFactory - AutoShutdown can be configured to unhook from AppDomain-Unload, and avoid premature shutdown with IHostBuilder (@snakefoot)
    • ๐ŸŽ #3579 PerformanceCounterLayoutRenderer - Added Layout-support for Instance-property (@snakefoot)
    • #3583 ${local-ip} Layout Renderer for local machine ip-address (@snakefoot + @304NotModified)
    • #3583 CachedLayoutRendererWrapper - Added CachedSeconds as ambient property. Ex. ${local-ip:cachedSeconds=60} (@snakefoot)
    • #3586 JsonLayout - Added EscapeForwardSlash-option to skip Json-escape of forward slash (@304NotModified)
    • #3593 AllEventPropertiesLayoutRenderer - Added Exclude-option that specifies property-keys to skip (@snakefoot)
    • ๐Ÿ‘ป #3611 ${Exception} - Added new Format-option values HResult and Properties (@snakefoot)

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ”จ #3622 + #3651 ConcurrentRequestQueue refactoring to reduce code complexity (@snakefoot)
    • ๐Ÿš€ #3636 AsyncTargetWrapper now fallback to clearing internal queue if flush fails to release blocked writer threads (@snakefoot)
    • #3641 ${CallSite} - Small improvements for recognizing async callsite cases (@snakefoot)
    • #3642 LogManager.GetCurrentClassLogger - Improved capture of Logger name when called within lambda_method (@snakefoot)
    • #3649 ${BaseDir:FixTempDir=true} fallback to process directory for .NET Core 3 Single File Publish (@snakefoot)
    • ๐Ÿ”ง #3649 Auto-loading NLog configuration from process.exe.nlog will priotize process directory for .NET Core 3 Single File Publish (@snakefoot)
    • ๐Ÿ”จ #3654 ObjectPathRendererWrapper minor refactorings (@snakefoot)
    • #3660 ObjectHandleSerializer.GetObjectData includes SerializationFormatter=true for use in MDLC + NDLC (@snakefoot)
    • ๐ŸŒฒ #3662 FileTarget - Extra logging when FileName Layout renders empty string (@snakefoot)

    ๐ŸŽ Performance

    • #3618 LogFactory - Faster initial assembly reflection and config loading (@snakefoot)
    • #3635 ConsoleTarget - Added WriteBuffer option that allows batch writing to console-stream with reduced allocations (@snakefoot)
    • ๐Ÿ”’ #3635 ConsoleTarget - Added global lock to prevent any threadsafety issue from unsafe console (@snakefoot)
  • v4.6.7 Changes

    August 25, 2019

    ๐Ÿ”‹ Features

    • ๐Ÿ‘ป #3531 Added ${object-path} / ${exception:objectpath=PropertyName}, for rendering a property of an object (e.g. an exception) (#3531) (@304NotModified)
    • ๐Ÿ‘ #3560 WhenMethodFilter - Support dynamic filtering using lambda (#3560) (@snakefoot)
    • ๐ŸŒฒ #3184 Added support for dynamic layout renderer in log level filters (e.g. minLevel, maxLevel) (#3184) (@snakefoot)
    • #3558 ExceptionLayoutRenderer - Added Source as new format parameter. (@snakefoot)
    • #3523 ColoredConsoleTarget - Added DetectOutputRedirected to skip coloring on redirect (@snakefoot)

    ๐Ÿ‘Œ Improvements

    ๐ŸŽ Performance

    • #3540 MessageTemplateParameters - Skip object allocation when no parameters (@snakefoot)
    • #3527 XmlLayout - Defer allocation of ObjectReflectionCache until needed (#3527) (@snakefoot)
  • v4.6.6 Changes

    July 14, 2019

    ๐Ÿ”‹ Features

    ๐ŸŽ Performance

  • v4.6.5 Changes

    June 13, 2019

    ๐Ÿ›  Bugfixes

    ๐Ÿ”‹ Features

    ๐Ÿ‘Œ Improvements

    ๐ŸŽ Performance

    • ๐Ÿ‘ #3444 RetryingMultiProcessFileAppender - better init BufferSize (@snakefoot)