【问题标题】:LoggerMessage string interpolation is not working - NLOG & Azure table storageLoggerMessage 字符串插值不起作用 - NLOG 和 Azure 表存储
【发布时间】:2018-12-03 09:52:16
【问题描述】:

我正在使用 Nlog 和 Azure 表存储,我的日志写入 (LoggerExtensions.cs) 如下所示。

TestMessageAction = LoggerMessage.Define<string>(
            LogLevel.Error,
            new EventId(1000, nameof(TestMessage)),
            "Test Error Message (Key = {key})");

public static void TestMessage(this ILogger logger, string key, Exception ex)
    {
        TestMessageAction(logger, key, ex);
    }

如果目标是文件或数据库,这可以正常工作。在 azure 表存储中无法正常工作。

例子:

对于上面相同的代码,我在文件下面看到

Test Error Message (Key = ef5bbee2-ac68-4dee-8497-54d5d9691a92)

但在 Azure 表存储中

Test Error Message (Key = key)

Azure 表存储的 Nlog 目标:Nlog.config

<target xsi:type="AzureTableStorage"
        name="NLogAzureTable"
        layout="${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message} ${exception}"
        connectionString="******"
        tableName="ServiceLogs"
        logTimeStampFormat="O" />

 <rules>
<logger name="*" minlevel="Info" writeTo="NLogAzureTable"></logger>
 </rules>

如果我不使用 LoggerMessage,Azure 日志看起来还不错。

_logger.LogInfo($"Test Info : {key}");


测试信息:ef5bbee2-ac68-4dee-8497-54d5d9691a92

请让我知道我在这里缺少什么。

谢谢。

【问题讨论】:

    标签: logging nlog azure-table-storage string-interpolation


    【解决方案1】:

    不确定是否是错误,但您可以在此处查看:

    https://github.com/JDetmar/NLog.Extensions.AzureStorage/blob/6ed03bfa183b231dffeb3733b912c87fe8efc6f6/src/NLog.Extensions.AzureStorage/NLogEntity.cs#L24

    然后它会这样做:

    Message = logEvent.Message;
    

    而不是这个:

    Message = logEvent.FormattedMessage;
    

    您应该看到FullMessage 包含正确的格式。

    可能会创建一个问题并询问项目的维护者:https://github.com/JDetmar/NLog.Extensions.AzureStorage/issues

    【讨论】:

    • 感谢您的帮助 Rolf,我认为这就是问题所在。 LogEventInfo.Message - 获取或设置包括任何参数占位符的日志消息。我现在将在 GitHub 中提出问题。
    猜你喜欢
    • 1970-01-01
    • 2020-01-22
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2013-07-24
    相关资源
    最近更新 更多