Как настроить NLog для функций Azure? - PullRequest
1 голос
/ 09 июня 2019

Мне может понадобиться помощь.

Я хочу использовать NLog с функциями Azure v2 (Target Framework .NET Core 2.2) - и создал класс

Startup : FunctionsStartup

, украшенный

[assembly: FunctionsStartup(typeof(PmsFunctions.Startup))]

И создал этот метод

public override void Configure(IFunctionsHostBuilder builder)
{
    builder.Services.AddLogging(loggingBuilder =>
    {
        loggingBuilder.ClearProviders();
        loggingBuilder.SetMinimumLevel(LogLevel.Trace);
        loggingBuilder.AddNLog();
    }).BuildServiceProvider();
}

В конструкторе класса Startup я создал конфигурацию NLog, используя код:

var mailTarget = new MailTarget("mandrill")
{

    Html = true,
    AddNewLines = true,
    ReplaceNewlineWithBrTagInHtml = true,
    Subject = "XXXXX",
    To = "john@doe.com,
    From = "john@doe.com",
    Body = "Message: ${message}${newline}${newline}Date: ${date}${newline}${newline}Exception: ${exception:format=tostring}${newline}${newline}",
    SmtpUserName = "XXXXXXX",
    SmtpPassword = "XXXXXXX",
    SmtpAuthentication = SmtpAuthenticationMode.Basic,
    SmtpServer = "XXXXXXXX",
    SmtpPort = 587
};

var bufferedMailTarget = new BufferingTargetWrapper("bufferedMandril", mailTarget)
{
    SlidingTimeout = false,
    BufferSize = 100,
    FlushTimeout = 10000
};
config.AddTarget(bufferedMailTarget);

var mailRule = new LoggingRule("*", NLog.LogLevel.Warn, bufferedMailTarget);
config.LoggingRules.Add(mailRule);

var logger = NLogBuilder.ConfigureNLog(config).GetCurrentClassLogger

Я пытаюсьиспользуйте регистратор в функциях с помощью введенного ILogger.Он отлично работает локально, но полностью «мертв» при использовании Azure.Я предполагаю, что это способ, которым я настраиваю NLog.

Как мне сделать это правильно?

1 Ответ

0 голосов
/ 11 июня 2019

Я настроил свой аналогично так, и я успешно получаю электронные письма от своего сервиса в Azure (я настроил одну функцию для явного ведения журнала предупреждения, поэтому при вызове я получаю электронное письмо).

public Startup()
{
    LoggingConfiguration config = new LoggingConfiguration();

    var mailTarget = new MailTarget("mandrill")
    {
        Html = true,
        AddNewLines = true,
        ReplaceNewlineWithBrTagInHtml = true,
        Subject = "Test...",
        To = "-----",
        From = "john@doe.com",
        Body = "Message: ${message}${newline}${newline}Date: ${date}${newline}${newline}Exception: ${exception:format=tostring}${newline}${newline}",
        SmtpUserName = "-----",
        SmtpPassword = "-----",
        SmtpAuthentication = SmtpAuthenticationMode.Basic,
        SmtpServer = "-----",
        SmtpPort = 587
    };

    var bufferedMailTarget = new BufferingTargetWrapper("bufferedMandril", mailTarget)
    {
        SlidingTimeout = false,
        BufferSize = 100,
        FlushTimeout = 10000
    };

    config.AddTarget(bufferedMailTarget);

    var mailRule = new LoggingRule("*", NLog.LogLevel.Warn, bufferedMailTarget);
    config.LoggingRules.Add(mailRule);

    NLogBuilder.ConfigureNLog(config);
}

public override void Configure(IFunctionsHostBuilder builder)
{
    builder.Services.AddLogging(b =>
    {
        b.AddNLog();
    });
}

...