LoggerMessage 字符串插值不起作用 - NLOG 和 Azure table 存储
LoggerMessage string interpolation is not working - NLOG & Azure table storage
我正在使用 Nlog 和 Azure table 存储,我的日志写入 (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 table 存储中无法正常工作。
示例:
对于上面的相同代码,我在下面的文件中看到
Test Error Message (Key = ef5bbee2-ac68-4dee-8497-54d5d9691a92)
但在 Azure table 存储中
Test Error Message (Key = key)
和 Azure table 存储的 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
请让我知道我在这里遗漏了什么。
谢谢。
不确定这是否是一个错误,但你可以在这里看到:
然后它会这样做:
Message = logEvent.Message;
而不是这个:
Message = logEvent.FormattedMessage;
您应该会看到 FullMessage
包含正确的格式。
也许创建一个问题并询问项目的维护者:https://github.com/JDetmar/NLog.Extensions.AzureStorage/issues
我正在使用 Nlog 和 Azure table 存储,我的日志写入 (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 table 存储中无法正常工作。
示例:
对于上面的相同代码,我在下面的文件中看到
Test Error Message (Key = ef5bbee2-ac68-4dee-8497-54d5d9691a92)
但在 Azure table 存储中
Test Error Message (Key = key)
和 Azure table 存储的 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
请让我知道我在这里遗漏了什么。
谢谢。
不确定这是否是一个错误,但你可以在这里看到:
然后它会这样做:
Message = logEvent.Message;
而不是这个:
Message = logEvent.FormattedMessage;
您应该会看到 FullMessage
包含正确的格式。
也许创建一个问题并询问项目的维护者:https://github.com/JDetmar/NLog.Extensions.AzureStorage/issues