Azure存储Blob的Web应用程序中的log4net?

时间:2015-12-29 06:11:25

标签: azure log4net

我正在尝试将应用程序日志存储在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>

1 个答案:

答案 0 :(得分:0)

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

虽然它正在使用表存储,但您应该能够看到流程。

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

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