Использование NLog с NServiceBus 3 - PullRequest
5 голосов
/ 12 марта 2012

Возможно ли получить журнал NServiceBus3 в NLog? и если да, у кого-нибудь есть примеры, как это сделать?

РЕДАКТИРОВАТЬ: Решение

Если кому-то интересно, вот моя реализация appender, некоторые уровни log4net, вероятно, не сопоставлены с разумными областями NLog, но это должно дать другим людям хотя бы начальную точку

// Setup a custom formatter like the one below to get nice exception logging
    //<target name="YourLogFile" xsi:type="File" fileName="${basedir}/../logs/YourLogFile.log" archiveFileName="${basedir}/../logs/archives/YourLogFile.{#####}.log" 
    //layout="${longdate}|${level:uppercase=true}|${logger}|${message}${onexception:|EXCEPTION OCCURRED\:${exception:format=type,message,method:maxInnerExceptionLevel=5:innerFormat=shortType,message,method}}" 
    //archiveEvery="Day" archiveNumbering="Sequence" maxArchiveFiles="14" />
    public class NlogAppenderForLog4Net : AppenderSkeleton
    {
        protected override void Append(log4net.Core.LoggingEvent loggingEvent)
        {
            var Logger = LogManager.GetLogger(loggingEvent.LoggerName);


            if (loggingEvent.Level == Level.Fatal)
            {
                if (loggingEvent.ExceptionObject != null)
                {
                    Logger.FatalException(loggingEvent.RenderedMessage, loggingEvent.ExceptionObject);
                }
                else
                {
                    Logger.Fatal(loggingEvent.RenderedMessage);
                }
            }
            //if its an error
            else if(loggingEvent.Level == Level.Error ||
                    loggingEvent.Level == Level.Critical ||
                    loggingEvent.Level == Level.Emergency)
            {
                if(loggingEvent.ExceptionObject != null)
                {
                    Logger.ErrorException(loggingEvent.RenderedMessage, loggingEvent.ExceptionObject);
                }
                else{
                    Logger.Error(loggingEvent.RenderedMessage);
                }
            }
            //if its a warning
            else if (loggingEvent.Level == Level.Warn)
            {
                if (loggingEvent.ExceptionObject != null)
                {
                    Logger.WarnException(loggingEvent.RenderedMessage, loggingEvent.ExceptionObject);
                }
                else
                {
                    Logger.Warn(loggingEvent.RenderedMessage);
                }
            }
            //if its info
            else if (loggingEvent.Level == Level.Info || loggingEvent.Level == Level.Notice)
            {
                Logger.Info(loggingEvent.RenderedMessage);
            }
            else
            {
                Logger.Trace(loggingEvent.RenderedMessage);
            }
        }
    }

и вот как я подключаю его в NServiceBus

.Log4Net<NlogAppenderForLog4Net>(a => { })

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Существуют существующие реализации NLogAppender, которые вы можете использовать ... Например, есть log4net.NLogAppender, который можно найти как в GitHub : так и установить из NuGet.

1 голос
/ 12 марта 2012

Без разветвления вы можете создать свой собственный appender для Log4Net для перенаправления на NLog. Здесь - некоторые дополнительные сведения о входе в NSB.

...