.NET Core Azure WebJob Trace Logs 仅记录 1 个条目

.NET Core Azure WebJob Trace Logs only logs 1 entry

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

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

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");
        //...
    }

所以第二次调用永远不会被记录。

如有任何帮助,我们将不胜感激。我在想我错过了什么。

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