所以我遇到了完全相同的问题。从 Azure Worker Roles 中获取诊断日志是/只是一种痛苦。
几个月前,我尝试使用 NLog 解决该问题,然后使用 WAD 将日志文件复制到 Azure 存储,但这种方法非常脆弱,并且在大多数情况下根本不起作用 - 只需查看我写的关于所需步骤的博文。
大约一个月前,我决定解决这个问题。
介绍 NLog.AzureStorage
结果是NuGet NLog.AzureStorage 包,它定义了一个自定义 NLog 目标,可用于本地写入 Azure 存储附加 Blob,就好像它们是本地文件系统上的文件一样。
在您的 web.config 或 app.config 文件中,只需定义扩展,然后使用AzureBlobStorageLogger类型定义一个新目标 - 您将需要指定您的 Azure存储连接字符串,以及合适的容器和Blob名称:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
throwExceptions="false">
<extensions>
<add assembly="NLog.AzureStorage" />
</extensions>
<targets>
<target xsi:type="AzureBlobStorageLogger"
name="BlobStorageLogger"
storageConnectionString="[AZURE STORAGE CONNECTION STRING]"
storageContainerName="nlog-storage-test"
storageBlobName="nlog-storage-test.txt"
/>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="BlobStorageLogger" />
</rules>
</nlog>
该软件包目前位于,但是我正在与大批量客户端一起在生产中使用它,因此它经过了实战测试并且速度很快。
配置完成后,您可以通过 Azure 门户轻松下载日志文件,方法是导航到 Container -> Blob,然后单击下载:
我计划在某个时候将 Azure 表存储作为目标添加,但我个人不喜欢查看数据库中的日志,所以这个要求在优先级列表中的某个位置!
我非常乐意通过 GitHub 的https://github.com/nickheppleston/NLog.AzureStorage接受拉取请求或问题。