Release notes

3.1.0

Release date

2025-05-12

Added

  • Migrate the log4net site to Antora and use logging-parent pom (implemented by @FreeAndNil in #210) (209, 210)

  • detect Android and use environment variables instead of AppSettings (reported by @arunjose696, implemented by @FreeAndNil in #240) (239, 240)

Fixed

  • RollingFileAppender does not respect the MaxSizeRollBackups with positive CountDirection (implemented by @gdziadkiewicz in #232) (163, 231, 232, 236)

3.0.4

Release date

2025-02-21

Added

  • Enable automatic test runs on commit (implemented by @gdziadkiewicz in #204) (106, 204)

  • Provide path of expected .config file in error message (requested by @FrankNuessle, implemented by @FreeAndNil in #228) (227, 228)

Fixed

  • Keep old, working ubuntu image version (by @gdziadkiewicz) (215)

  • fixed SetQWForFiles method name in FileAppender from #196 by @sketchturner in #217 (fixes #216 reported by @sketchturner) (216, 217, 196)

  • XmlLayoutSchemaLog4J: Changed XML start element for exceptions since v3.0.0 (reported by @sita-martin, fixed in #226 by @FreeAndNil) (225, 226)

3.0.3

Release date

2024-11-07

Added

  • Enable Microsoft.CodeAnalysis.NetAnalyzers (by @FreeAndNil) (201)

Changed

  • file scoped namespaces and CA warnings fixed in examples (by @FreeAndNil) (202)

  • use raw strings for config files in unit tests (by @FreeAndNil) (203)

  • use raw strings for config files in unit tests (reported by @FerdinandStapenhorst, implemented by @FreeAndNil in #206 (205)

Fixed

  • MDC was accidentally renamed into Mdc in 3.0.2 - this change was reverted (72fdee8)

  • NDC was accidentally renamed into Ndc in 3.0.2 - this change was reverted (72fdee8)

Updated

  • Fix empty string received by .NET 8 users on Linux on userName (by @gdziadkiewicz) (199)

  • Bumped NUnit to 4.2.2 (by @FreeAndNil) (200)

3.0.2

Release date

2024-10-21

Known issues

  • MDC was accidentally renamed into Mdc - this will be reverted in 3.0.3

  • NDC was accidentally renamed into Ndc - this will be reverted in 3.0.3

Added

  • separate review instructions for log4net (by @FreeAndNil) (189)

Changed

  • more modern coding style (by @FreeAndNil) (196)

Fixed

  • ObjectDisposedException in TelnetAppender (3.0.1) reported by @VianneyTremelo, fixed by @FreeAndNil in #195 (194)

  • IndexOutOfRangeException when creating child loggers multithreaded, reported by @FreeAndNil, fixed by @FreeAndNil in #198 (197)

3.0.1

Release date

2024-09-27

Added

  • added source link (by @FreeAndNil) (176)

  • automate version bumps (by @FreeAndNil) (181)

Fixed

  • use ManagedThreadId for long running tasks reported by @Audela-220, fixed by @FreeAndNil in #180 (177)

  • log4net.Util.PatternString not working in 3.0.0 (Unable to set property [file] on object [log4net.Appender.FileAppender]), reported by @sc-mk, fixed by @FreeAndNil in #184 (183)

3.0.0

Release date

2024-09-15

Breaking changes

Starting with 3.0.0 we only support the following target frameworks

  • net462

  • netstandard2.0

The reasoning for this change can be found in #111 - Dropping support for older runtimes

Removed obsolete classes and members

since 1.2.14 (2015)
  • log4net.Appender.BufferingAppenderSkeleton.OnlyFixPartialEventData

  • log4net.Appender.ColoredConsoleAppender.ctor(ILayout)

  • log4net.Appender.ColoredConsoleAppender.ctor(ILayout, bool)

  • log4net.Appender.ConsoleAppender.ctor(ILayout)

  • log4net.Appender.ConsoleAppender.ctor(ILayout, bool)

  • log4net.Appender.DebugAppender.ctor(ILayout)

  • log4net.Appender.EventLogAppender.ctor(ILayout)

  • log4net.Appender.FileAppender.ctor(ILayout, string)

  • log4net.Appender.FileAppender.ctor(ILayout, string, bool)

  • log4net.Appender.MemoryAppender.OnlyFixPartialEventData

  • log4net.Appender.SmtpAppender.LocationInfo

  • log4net.Appender.TextWriterAppender.ctor(ILayout, Stream)

  • log4net.Appender.TextWriterAppender.ctor(ILayout, TextWriter)

  • log4net.Appender.TraceAppender.ctor(ILayout)

  • log4net.Config.DOMConfigurator

  • log4net.Config.AliasDomainAttribute

  • log4net.Config.DomainAttribute

  • log4net.Config.DOMConfiguratorAttribute

  • log4net.Core.LoggerManager.GetLoggerRepository

  • log4net.Core.LoggerManager.CreateDomain

  • log4net.Core.LoggingEventData.TimeStamp

  • log4net.Core.LoggingEvent.GetExceptionStrRep

  • log4net.Core.LoggingEvent.FixVolatileData

  • log4net.LogManager.GetLoggerRepository

  • log4net.LogManager.CreateDomain

since 2.0.6 (2016)
  • log4net.Util.SystemInfo.ProcessStartTime

Sealed classes - the following classes are now sealed

  • log4net.Config.AliasRepositoryAttribute

  • log4net.Config.RepositoryAttribute

  • log4net.Config.XmlConfiguratorAttribute

Added

  • Add support for nullable annotations (by @erikmav) (122, 123, 124, 126, 129, 131, 132, 136, 141)

  • Enable building log4net with docker container (by @FreeAndNil) (127, 128)

Changed

  • log4net.Appender.MemoryAppender.m_eventsList (protected field) is now List<LoggingEvent> (instead of System.Collections.ArrayList) (124)

  • log4net.Util.ReadOnlyPropertiesDictionary.InnerHashtable is now Dictionary<string, object?> (instead of System.Collections.Hashtable) (124)

  • log4net.Repository.Hierarchy.Hierarchy.EmittedNoAppenderWarning is now internal (157)

Fixed

  • Fix dotnet (ie not netfx) test run (by @mobilebilly) (109)

  • Regression: Creating nested loggers in reverse order fails in 3.0.0-preview.1 (by @FreeAndNil) (156)

  • ColoredConsoleAppender writes UTF-8 preamble to the console on initialization (reported by @RoboBurned, fixed by @FreeAndNil) (168)

  • System.NullReferenceException when comparing with a null Level (by @FreeAndNil) (169)

  • Culture-Specific String Comparisons Cause RollingFileAppender Failure in log4net on NET 5+ (reported by @stianeklund) (179)

Removed

  • Dropping support for older runtimes (by @fluffynuts and @FreeAndNil) (111, 115)

  • Remove deprecated code for 3.0 (by @erikmav) (125, 138)

  • log4net.Appender.RemotingAppender (154)

  • log4net.Appender.NetSendAppender (158)

  • Serializable Support (for .netstandard) (175)

2.x

Changed

  • release notes for older releases can be found here (2.x-and-older)