在Azure / Blob存储中使用RollingFileAppender的log4net

时间:2016-12-12 21:40:59

标签: c# azure log4net azure-storage-blobs

我在我的网络应用程序中使用log4net 我们正在通过云服务(非应用服务)部署它。

我的理解是,我无法访问磁盘上的日志文件(而且,这些文件无论如何都不会持久)。

我的阅读材料是使用Blob存储。但我没有看到有关如何执行此操作的任何代码。有一个nuget包 https://www.nuget.org/packages/log4net.Appender.Azure 但是文档说它为每个日志条目创建了一个文件。

我想要的是RollingLogFile。

我基本上必须创建自己的吗?如下所示,下拉log4net源代码并创建自己的appender,记录到云存储帐户而不是磁盘?看起来好像很多工作,本来以为有人会编写这个功能吗?

感谢。

1 个答案:

答案 0 :(得分:1)

This project分享了一些示例,这些示例使用AzureBlobAppender或AzureAppendBlobAppender为log4Net存储Azure Blob存储中的日志条目。

根据代码,我们可以发现AzureBlobAppender将为Azure Blob存储中的每个日志实体创建单独的xml文件,但AzureAppendBlobAppender会通过调用CloudAppendBlob.AppendBlock method将一天生成的日志存储在一个日志文件中以附加新文件将日志数据块阻塞到现有blob的末尾。

如果您不想为每个日志条目创建xml文件,可以尝试使用AzureAppendBlobAppender。

private static string Filename(string directoryName){
    return string.Format("**{0}/{1}.entry.log.xml**",
                            directoryName,
                            DateTime.Today.ToString("yyyy_MM_dd",
                            DateTimeFormatInfo.InvariantInfo));
}