apache/logging-log4net

Remove deprecated code for 3.0

erikmav opened this issue · 4 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.

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?

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.

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.

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