Log4Net тупик в AppenderSkeleton.DoAppend - PullRequest
0 голосов
/ 15 февраля 2019

Я использую log4net в многопоточном сервисе.И в какой-то момент служба неожиданно перестает отвечать.Я проверил дамп процесса и стек ниже.

Это конфигурация приложения:

        var roller = new RollingFileAppender();
        roller.LockingModel = new MinimalLock();
        roller.File = @"logs\Log_Tabsters_" + appName + "_";
        roller.DatePattern = "yyyy-MM-dd'.log'";
        roller.StaticLogFileName = false;
        roller.AppendToFile = true;
        roller.RollingStyle = RollingMode.Composite;
        roller.Layout = patternLayout;
        roller.MaxSizeRollBackups = 10;
        roller.MaximumFileSize = "1GB";
        roller.ActivateOptions();


            var buffer = new BufferingForwardingAppender();
            buffer.BufferSize = 100;
            buffer.Lossy = false;
            buffer.AddAppender(roller);
            buffer.ActivateOptions();
            hierarchy.Root.AddAppender(buffer);

            var console = new ColoredConsoleAppender();

            var mappingError = new LevelColors();
            mappingError.Level = Level.Error;
            mappingError.ForeColor = Colors.White;
            mappingError.BackColor = Colors.Red;                
            console.AddMapping(mappingError);

            var mappingWarn = new LevelColors();
            mappingWarn.Level = Level.Warn;
            mappingWarn.ForeColor = Colors.White;
            mappingWarn.BackColor = Colors.Yellow;
            console.AddMapping(mappingWarn);

            console.Layout = patternLayout;
            console.ActivateOptions();
            hierarchy.Root.AddAppender(console);

Я вижу, что потоки застряли в DoAppend

трассировка стека составляет

                        log4net.dll!log4net.Appender.AppenderSkeleton.DoAppend(log4net.Core.LoggingEvent loggingEvent)
                        log4net.dll!log4net.Util.AppenderAttachedImpl.AppendLoopOnAppenders(log4net.Core.LoggingEvent loggingEvent)
                        log4net.dll!log4net.Repository.Hierarchy.Logger.CallAppenders(log4net.Core.LoggingEvent loggingEvent)
                        log4net.dll!log4net.Repository.Hierarchy.Logger.ForcedLog(System.Type callerStackBoundaryDeclaringType, log4net.Core.Level level, object message, System.Exception exception)
                        log4net.dll!log4net.Repository.Hierarchy.Logger.Log(System.Type callerStackBoundaryDeclaringType, log4net.Core.Level level, object message, System.Exception exception)
                        log4net.dll!log4net.Core.LogImpl.Warn(object message)
                        TabstersCore.dll!Tabsters.Logger.AddLog(string module, string log, Tabsters.LogType logType) Line 129
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...