Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Serilog接收Loki,将日志大批量发送给Loki。如何减少批量数量?_C#_Logging_Httpclient_Serilog - Fatal编程技术网

C# Serilog接收Loki,将日志大批量发送给Loki。如何减少批量数量?

C# Serilog接收Loki,将日志大批量发送给Loki。如何减少批量数量?,c#,logging,httpclient,serilog,C#,Logging,Httpclient,Serilog,我正在尝试将我的日志从.netcore 3.1 API发送到Loki服务器。为此,我使用了Serilog Sinks Loki nugget软件包。 当我运行代码时,会立即发送日志,我可以在Grafana中看到它们。随着时间的推移,日志的延迟越来越大。最后,我看到我的日志延迟10分钟到达洛基。 我读过这篇文章,了解到Serilog Sinks Loki位于Serilog Sinks Http之上,所以我需要在那里配置一些东西,以使我的日志更快到达,但不知道如何,有人能帮我吗? 我的目标是立即发送

我正在尝试将我的日志从.netcore 3.1 API发送到Loki服务器。为此,我使用了Serilog Sinks Loki nugget软件包。 当我运行代码时,会立即发送日志,我可以在Grafana中看到它们。随着时间的推移,日志的延迟越来越大。最后,我看到我的日志延迟10分钟到达洛基。 我读过这篇文章,了解到Serilog Sinks Loki位于Serilog Sinks Http之上,所以我需要在那里配置一些东西,以使我的日志更快到达,但不知道如何,有人能帮我吗? 我的目标是立即发送日志,不要延迟

这是我的program.cs代码

public static IHostBuilder CreateHostBuilder(string[] args) =>
           Host.CreateDefaultBuilder(args)
                .UseLamar()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
                .ConfigureLogging(logging =>
                {

                    var credentials = new BasicAuthCredentials("LOKI-SERVER-URL", "USER", "PASSWORD");
                    var log = new LoggerConfiguration()
                            .MinimumLevel.Verbose()
                            .Enrich.FromLogContext()
                            .WriteTo.LokiHttp(credentials)
                            .CreateLogger();
                    logging.AddSerilog(log);
                });
    }
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.UseLamar()
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
})
.ConfigureLogging(日志=>
{
var凭证=新的基本凭证(“LOKI-SERVER-URL”、“用户”、“密码”);
var log=new LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.FromLogContext()的
.WriteTo.LokiHttp(凭据)
.CreateLogger();
logging.AddSerilog(log);
});
}

虽然
Serilog.Sinks.Loki
包装了一个
Serilog.Sinks.Http
sink,它允许您配置消息的发送频率()

也就是说,
Sinks.Sink.Http
的默认周期是2秒,因此10分钟对于使用默认设置发送消息来说太长了。您可能存在连接问题,阻止接收器发送消息或阻止服务器接收消息

您是否尝试过启用以查看接收器是否捕获了任何错误

如果没有,您可以监视网络流量,以查看在接收器尝试发送日志事件时是否可以找到失败的尝试和/或超时

您还可以将一些调试消息写入文件或其他内容,以查看发送消息的频率/数量

这里有一个最近发行的
Serilog.Sinks.Loki
repo(也许是您创建的?)


非常感谢您的回答,在这里和GitHub,是的,就是我。这很奇怪。因为今天早些时候,我注意到我所有的日志每10分钟到达一大块(准确地说),这似乎是一种模式。(这发生在我通过VS在本地运行代码时,甚至在我将代码发布到Azure web app之后)现在你们告诉我,默认周期是2秒,我又看了看grafana,似乎几秒钟后日志就到了。我无法解释这种行为,除了可能Loki服务器存在连接问题。无论如何,非常感谢你!