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