获取" BlockCountExceedsLimit"使用log4net.Appender.AzureAppendBlobAppender时出现异常

时间:2018-05-14 04:08:06

标签: log4net azure-web-app-service

我使用log4net.Appender.AzureAppendBlobAppender来记录我的网络应用信息&错误。有时我会得到" BlockCountExceedsLimit"例外。这是由于附加blob在通过异常(Conflict(409))之后只接受了50,000个块提交。我检查了代码,发现它等待512个日志事件并将每个日志条目分别刷新到附加blob。因此,我们一天只能记录50,000个日志条目。

有人可以帮我这个吗?有没有人知道这个替代品?

谢谢, KARTHIK

2 个答案:

答案 0 :(得分:1)

根据您的描述,我假设您正在使用log4net.Appender.Azure nuget包。正如您在AzureAppendBlobAppender.cs下看到的那样:

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

根据我的理解,您可以按AzureAppendBlobAppender.cs编写自定义AzureAppendBlobAppender并调整FilenameSendBuffer方法以满足您的要求。

  

我正在使用log4net.Appender.AzureAppendBlobAppender来记录我的网络应用程序的信息&错误。

由于您使用azure Web应用程序来托管您的应用程序,您可以使用内置的应用程序日志记录(Blob),而azure side将帮助您每小时生成日志。您可以登录Azure门户,选择您的Web应用程序,启用应用程序日志记录(Blob),将日志记录级别设置为“信息”,您可以关注的详细信息Enable diagnostics logging for web apps in Azure App Service

对于您的应用程序,您可以使用以下代码记录信息和错误。

System.Diagnostics.Trace.TraceError("xxxxx");

System.Diagnostics.Trace.TraceInformation("xxxxx");

答案 1 :(得分:0)

我已经将代码更改为稍微添加blob,一旦缓冲区达到阈值(512个日志条目),它就会在单个提交中刷新日志条目。

enter image description here