从Azure检索IIS日志

时间:2010-11-21 21:49:25

标签: iis azure logging

我一直在尝试从Azure获取IIS日志,而且我能够实现一次 - 现在,无论我尝试什么,我都无法将日志传输到我的存储帐户。

我试图在不重新部署我的代码的情况下这样做,在阅读之后似乎有可能。而且,正如我所提到的,我是成功的。但这让我感到疯狂,它只是不再这样做了。虽然,当我开始转移时,它确实在我的存储帐户中创建了队列,但这似乎就是这样。

我正在做的基本步骤是:

  • 将存储名称和密钥添加到我的配置中,作为“DiagnosticsConnectionString”*。
  • 使用DirectoriesBufferConfiguration设置DiagnosticMonitorConfiguration一分钟。
  • 使用新队列名称启动OnDemand传输。

我已经以编程方式完成了上述所有操作,并通过PowerShell的cmdaplet完成了上述所有操作。一旦我开始转移,它就会保持“尚未发布(不要结束/取消)”的状态。

我尝试过Logs,Directories甚至删除并重新创建了我的存储帐户。似乎没有什么工作。当我通过azure门户直接将我的存储帐户信息添加到我的角色配置时,它似乎有效;在它更新部署后,我看到了日志。但这不再适用了。有没有人有一些好的建议/材料?我只想将我的IIS日志传输到我的存储帐户 - 我已经使用了好几天。

更新:*这是我的配置:。我的WebRole.cs在工作时包含以下内容:

DiagnosticMonitor.Start("DiagnosticsConnectionString");

我已将其更新为开始转移:

var diag = new DiagnosticMonitorConfiguration()
{
    ConfigurationChangePollInterval = TimeSpan.FromMinutes(1),
    Directories = new DirectoriesBufferConfiguration()
    {
        ScheduledTransferPeriod = TimeSpan.FromMinutes(1)
    },
    Logs = new BasicLogsBufferConfiguration()
    {
        ScheduledTransferLogLevelFilter = LogLevel.Verbose,
        ScheduledTransferPeriod = TimeSpan.FromMinutes(1)
    }
};
DiagnosticMonitor.Start("DiagnosticsConnectionString", diag);

2 个答案:

答案 0 :(得分:4)

更改一行:

var diag = new DiagnosticMonitorConfiguration()

var diag = DiagnosticMonitor.GetDefaultInitialConfiguration()

后记,使用诊断中的现有对象而不添加自己的对象。 这是我的OnStart:

            var config = DiagnosticMonitor.GetDefaultInitialConfiguration();

            config.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter = LogLevel.Information;
            config.DiagnosticInfrastructureLogs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
            config.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
            DiagnosticMonitor.Start("DiagnosticsConnectionString", config);

答案 1 :(得分:1)

可能是日志没有生成,而不是下载时的问题。

有一个名为AzureLogFetcher的程序可能会有所帮助,可以找到有关登录工作的提示here