【问题标题】:log4net in Web Application for Azure Storage Blob?用于 Azure 存储 Blob 的 Web 应用程序中的 log4net?
【发布时间】:2015-12-29 16:02:24
【问题描述】:

我正在尝试将应用程序日志存储在 Azure 的存储 Blob 中。我可以使用以下代码在 Azure 中创建一个容器:

public override void ActivateOptions()
{
    base.ActivateOptions();

    _account = CloudStorageAccount.Parse(ConnectionString);
    _client = _account.CreateCloudBlobClient();
    _cloudBlobContainer = _client.GetContainerReference(ContainerName.ToLower());
    _cloudBlobContainer.CreateIfNotExists();     
}

但这里的问题是无法使用 log4net 在 blob 存储(容器)中创建日志或文件。

<log4net>
  <appender name="AzureAppender2" type="log4net.Appender.AzureBlobAppender, log4net.Appender.Azure">
    <param name="ContainerName" value="testcon" />
    <param name="DirectoryName" value="testcon/logs.txt" />
    <param name="ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=testcon;AccountKey="rftgdfgdfgfdg78=="/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <root>
    <level value="ALL" />
    <appender-ref ref="AzureAppender2" />
  </root>
</log4net>

【问题讨论】:

  • 清理了格式、标题和语法。

标签: azure log4net


【解决方案1】:

您可能想阅读这篇文章: http://www.kongsli.net/2011/08/15/log4net-writing-log-entries-to-azure-table-storage/

虽然是使用Table Storage,但应该可以看到流程。

我必须提到的一件事是,您应该只在 PAGE 类型的 blob 中记录您的条目。 BLOCK blob 针对少写多读进行了优化。如果您的应用程序正在登录 BLOCK blob,则您的整个应用程序可能会遇到瓶颈。另一方面,PAGE 类型的 blob 针对 R/W 操作进行了优化,并且对附加到文件的概念更加友好,因此您应该注意您使用的是 Azure SDK 中的哪些类。

即不要使用 CloudBlob 类,使用 CloudPageBlob 类,它明确地为您提供了用于处理 PAGE blob 的 API。

【讨论】:

    猜你喜欢
    • 2014-08-07
    • 2018-05-27
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2018-05-26
    • 2011-05-22
    相关资源
    最近更新 更多