【问题标题】:NLog container name formatNLog 容器名称格式
【发布时间】:2016-02-28 23:55:33
【问题描述】:

当容器名称没有任何异常时,NLog 是否不起作用? 我的应用程序的一个地方有以下代码:

    _log.AddLog("TestController", "Just test", LogLevel.INFO);

它工作正常(写入我的 Azure 表存储)。但我在另一个地方有以下代码:

                _log.AddLog("PricingController/PaymentCreditCard", p_ex.Message, LogService.LogLevel.WARN);

如果没有任何错误/异常,它就无法工作。就是什么都不写。我花了大约 1 个小时来搜索原因并发现,没有 '/' 它可以工作。我已阅读 NLog 文档,但没有在容器名称中找到任何关于斜杠的字样。还是写入 Azure 表存储的 wrapper 的问题?

【问题讨论】:

  • 我没有将 nlog 与 azure 表存储一起使用,所以我不知道它是如何工作的,但我假设 "PricingController/PaymentCreditCard" 在表中以 PartitionKeyRowKey 的形式出现。如果是这种情况,失败的原因可能是PartitionKeyRowKey 值中存在/ 字符。它不是PartitionKeyRowKey 值中的有效字符。有关不允许使用的字符列表,请参阅此链接:msdn.microsoft.com/en-us/library/azure/dd179338.aspx
  • 你是对的,它被写入分区键。只是包装器的问题 - 它不会抛出任何异常,所以,我什至不知道丢失的记录

标签: azure logging nlog azure-table-storage slash


【解决方案1】:

你写的是Azure表存储,Azure表存储没有容器的概念,结构很简单:存储账户>表>实体,更多信息可查here。因此,您需要指定表名而不是容器名,并且 Azure 表存储的表名不允许“/”斜杠。我建议您仔细检查名称,我认为您可能会指定一个 blob 容器,因此它不起作用。

【讨论】:

  • PartitionKey 有问题
  • @OlegSh 谢谢,我误解了这里的情况。
【解决方案2】:

正如 Gaurav Mantri 上面所说,问题出在 PartitionKey 中,其中符号“/”被拒绝 https://msdn.microsoft.com/en-us/library/azure/dd179338.aspx“关键字段中不允许使用的字符”部分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多