logging-log4net icon indicating copy to clipboard operation
logging-log4net copied to clipboard

Remove deprecated code for 3.0

Open erikmav opened this issue 1 year ago • 3 comments

There are numerous parts of the code that are marked with [Obsolete] attributes. Additionally there is code that may or may not any longer be in use, such as NDC (src/log4net/NDC.cs). Ideally with the major version change the deprecations should be removed.

erikmav avatar Mar 14 '24 16:03 erikmav

I agree with removing the obsolete classes and methods.

I'm not sure about NDC. Looking at the code it seems to be explicitly un-deprecated and there are many uses https://github.com/search?q=NDC.Push+path%3A*.cs+language%3AC%23&type=Code&ref=advsearch&l=C%23&l=

The class is just a wrapper around ThreadContext.Stacks["NDC"], so the gain for removing it would be small against the anger we could cause ;-)

When we DO want to remove it, we would do it later and first mak it (again) as deprecated.

@fluffynuts what do you think?

FreeAndNil avatar Mar 15 '24 10:03 FreeAndNil

I agree - something marked [Obsolete] can go, something that still works, even if it's only for a few users, can stay. And we should be very judicial about deprecations - I'd much rather keep the library useful for as many people as possible, so even if some part looks unused, if it works, leave it in until there's no other option but to lose it.

fluffynuts avatar Mar 15 '24 19:03 fluffynuts

OK. I would propose releasing the first 3.0.0 preview with the obsolete classes, so that we could deploy this version in our company and to other "willing" users. Then we remove those classes in the next preview for 3.0.0.

FreeAndNil avatar Mar 15 '24 21:03 FreeAndNil

Deleted obsolete API:

  • obsolete 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
  • obsolete since 2.0.6 - 2016
    • log4net.Util.SystemInfo.ProcessStartTime

Other changes:

  • log4net.Config.AliasRepositoryAttribute is now sealed
  • log4net.Config.RepositoryAttribute is now sealed
  • log4net.Config.XmlConfiguratorAttribute is now sealed

FreeAndNil avatar Apr 03 '24 13:04 FreeAndNil