.NET Core Azure WebJob跟踪日志仅记录1个条目

时间:2017-04-27 01:46:47

标签: azure .net-core azure-web-sites azure-storage azure-storage-blobs

我部署了.NET Core WebJob,并设置了登录Azure存储。在App Service上工作得很好,但在这个WebJob上却没有。实际上在其他Web作业上它运行良好,但那些不是.NET Core。所以问题是它只记录了1个条目,之后什么都没有。在WebJob仪表板上,它显示所有跟踪。我没有想法。以下是我的设置方法(除了设置之外,它正是在AppService上的设置方式。

更新 我创建了这个实用程序类:

public class LogUtil
{
    public LogUtil()
    {
    }
    private static bool loggerSet;
    private static ILogger<Program> logger;
    public static ILogger<Program> Logger
    {
        get
        {
            if (LogUtil.loggerSet) return LogUtil.logger;
            LogUtil.loggerSet = true;

            AzureAppServicesDiagnosticsSettings settings = new AzureAppServicesDiagnosticsSettings
            {
                BlobName = "trace.txt",
                FileSizeLimit = int.MaxValue,
                BlobCommitPeriod = new TimeSpan(0,0,0,0,500)
            };

            ILoggerFactory loggerFactory = new LoggerFactory()
            .AddConsole()
            .AddDebug()
            .AddAzureWebAppDiagnostics(settings);

            LogUtil.logger = loggerFactory.CreateLogger<Program>();
            return LogUtil.logger;
        }
    }
}

它被称为如下:

    //...
    static void Main(string[] args)
    {
        LogUtil.Logger.LogInformation("WebJob begins...");

        LogUtil.Logger.LogInformation("this line gets logged sometimes");

        LogUtil.Logger.LogInformation("this line does not get logged");
        //...
    }

所以永远不会记录第二个电话。

非常感谢任何帮助。我在想我错过了什么。

1 个答案:

答案 0 :(得分:0)

我更新了代码以反映我最终部署的代码。我假设我的测试没有记录所有内容,因为它太短了。这可能是一个奇怪的因素。我不确定删除BlobCommitPeriod的设置是否会有所作为,但是因为我们正在使用这个并且我需要日志...它将保持在那里直到我们可以在舞台环境上测试需要什么选项。所以基本上它可以在web作业完全运行时运行,这可能需要10-20分钟。当我运行测试时,它只记录了1或2行,但这是非常短的运行时间。字面上2-5秒长。所以希望这对任何有这个问题的人来说都不是问题,但对我来说是有效的。我只需要在完全运行时需要完整的日志,如果它被调用且不需要,那么我们将通过另一个日志知道。我希望这有助于某人。