serilog 相关问题

Serilog为文件,控制台等提供诊断日志记录。它易于设置,具有干净的API,并且可以在最近的.NET平台之间移植。

从我的 asp.net core webapi 到我的 dockerized elasticsearch 没有生成 Serilog 日志

我的 ASP.NET Core Web API 没有向我的 Dockerized Elasticsearch 生成 Serilog 日志。这是为什么? 我安装了 ASP.NET Core Web API 我的 ASP.NET Core Web API 没有向我的 Dockerized Elasticsearch 生成 Serilog 日志。这是为什么? 我安装了 ASP.NET Core Web API <PackageReference Include="Serilog.AspNetCore" Version="8.0.0" /> <PackageReference Include="Serilog.Sinks.Elasticsearch" Version="9.0.3" /> 我已经使用 docker-compose 设置了 elasticsearch、logstash(不需要?)和 kibana。 我在 Kibana 中没有收到任何数据,我认为这是因为没有任何内容登陆到 elasticsearch 中。 在elasticsearch中列出索引,我没有找到预期的索引,custom-index-{0:yyyy.MM} 寻找索引: docker exec -it elasticsearch bash 然后 curl -XGET 'http://localhost:9200/_cat/indices' 我明白了 green open .geoip_databases OPKgHw3hSNCmc4r0-ioqbw 1 0 41 0 39mb 39mb green open .apm-custom-link mrXi9BXyRC60MSlY94IorQ 1 0 0 0 226b 226b green open .kibana_7.16.1_001 Dth8t0rHTt2xCSgqL5JLQg 1 0 296 13 2.3mb 2.3mb green open .apm-agent-configuration NgOE1PhPSlS3gDcHL8I1fw 1 0 0 0 226b 226b green open .kibana_task_manager_7.16.1_001 YWW69XjBTQSr0mknnyKqoQ 1 0 17 795 177.8kb 177.8kb docker-compose.yaml: version: '3.4' services: elasticsearch: image: elasticsearch:7.16.1 container_name: elasticsearch environment: discovery.type: single-node ES_JAVA_OPTS: "-Xms512m -Xmx512m" ports: - "9200:9200" - "9300:9300" healthcheck: test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"] interval: 10s timeout: 10s retries: 3 networks: - elastic logstash: image: logstash:7.16.1 container_name: logstash environment: discovery.seed_hosts: logstash LS_JAVA_OPTS: "-Xms512m -Xmx512m" volumes: - ./logstash/pipeline/logstash-nginx.config:/usr/share/logstash/pipeline/logstash-nginx.config - ./logstash/nginx.log:/home/nginx.log ports: - "5000:5000/tcp" - "5000:5000/udp" - "5044:5044" - "9600:9600" depends_on: - elasticsearch networks: - elastic command: logstash -f /usr/share/logstash/pipeline/logstash-nginx.config kibana: image: kibana:7.16.1 container_name: kibana ports: - "5601:5601" depends_on: - elasticsearch networks: - elastic networks: elastic: driver: bridge 程序.cs: ... builder.Host.UseSerilog( (context, configuration) => configuration.ReadFrom.Configuration(context.Configuration) ); var app = builder.Build(); ... appsettings.json: "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.ElasticSearch" ], "MinimumLevel": { "Default": "Verbose", "Override": { "Microsoft": "Warning", "System": "Warning" } }, "WriteTo": [ { "Name": "Console" }, { "Name": "ElasticSearch", "Args": { "nodeUris": "http://elasticsearch:9200", "indexFormat": "custom-index-{0:yyyy.MM}", "autoRegisterTemplate": true } } ], "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ], "Properties": { "Application": "Drivers.WebApi" } 就我而言,appsettings.Development.json 中有“nodeUris”:“http://localhost:9200”。从 Visual Studio 运行应用程序时效果很好,但当两个容器都在 Docker 上运行时,它无法连接到 Elasticsearch。 解决方案是像这样覆盖环境变量: myapi: environment: - Serilog__WriteTo__2__Args__nodeUris=http://elasticsearch:9200 数字表示Elasticsearch在“WriteTo”数组中的位置。 对于调试此问题非常有用的是通过在应用程序的最开头添加以下内容来启用 Serilog SelfLog: Serilog.Debugging.SelfLog.Enable(msg => { try { if (!File.Exists("internallog.log")) { File.Create("internallog.log").Close(); } File.AppendAllText("internallog.log", msg, Encoding.UTF8); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } });

回答 1 投票 0

无法将文件添加到 ILoggerFactory 或 SeriLog

我有一个 API 应用程序,我想将日志写入文件。我在尝试将文件添加到 iLoggingBuilder 和 Serilog 时遇到错误。编译器说我见过使用的方法......

回答 1 投票 0

.net Core 和 Serilog 电子邮件接收器 - json 配置

我正在使用.net Core 2.0 和 Serilog 电子邮件接收器。我在使用 appsettings.json 配置电子邮件接收器时遇到问题。 program.cs 中的相同配置有效,而 appsetting.json 中的配置无效。

回答 2 投票 0

serilog 指定属性名称以在解构期间忽略它们

有 destructurama.byignoring 被 lambda 忽略。 Log.Logger = new LoggerConfiguration() .Destruct.ByIgnoringProperties(u => u.Password) // 其他记录器配置...

回答 1 投票 0

使用 Serilog mssqlserver 接收器自动删除旧日志条目?

Serilog mssqlserver 接收器是否有内置配置设置来自动删除早于特定天数(或周或月)的日志条目?基本上,我正在寻找...

回答 1 投票 0

Serilog 过滤器在子记录器上被忽略

我有一个 Serilog 配置对象,它一直按要求工作,但我刚刚添加了一个额外的接收器(电子邮件)。 因此,我添加了子记录器,以允许我向每个接收器添加过滤器。 嗬...

回答 1 投票 0

ASP.NET Core - Serilog 未将日志保存到 PostgreSQL

我在 ASP.NET Core Web API 中使用 Serilog 时遇到问题。我想通过用列分隔事物来将 API 事件保存到数据库中。 例如专栏 |例如:值 = 方法 | '获取',URL |当地...

回答 1 投票 0

Serilog 未在生产服务器上创建日志文件

我创建了一个 C# .net5.0 控制台应用程序,在测试过程中 Serilog 一直正常工作,记录到控制台和文件(同一文件夹;path="log.txt")。然而,当我跑步时...

回答 3 投票 0

Serilog 中带参数的输出不起作用

在 .Net Core Webapi 项目中,我使用 Serilog 进行日志记录。但是当我使用 _logger.LogInformation("Token for user {UserName} created",data.username);并检查日志文件,输出是&q...

回答 1 投票 0

在Serilog中设置MinimumLevel:是否可以对命名空间使用通配符/正则表达式?

在Serilog中设置MinimumLevel:是否可以在命名空间中使用通配符/正则表达式? 假设我有自己的具有不同大小写的命名空间,它们都需要登录 Informat...

回答 2 投票 0

如果表先前不存在,Serilog 仅写入数据库

我正在使用 .net 8 最小 API,并且我已将 Serilog 添加到我的项目中: 我正在使用 .net 8 最小 API,并且我已将 Serilog 添加到我的项目中: <PackageReference Include="Serilog.AspNetCore" Version="8.0.1" /> <PackageReference Include="Serilog.Sinks.MySQL" Version="5.0.0" /> 我正在写入 MySQL 数据库,如果该表不存在,我会让 Serilog 创建它。继承人 appsettings.json: "WriteTo": [ { "Name": "MySQL", "Args": { "connectionString": "server=myserver;port=3306;Database=mydatabase;uid=username;pwd=password;", "tableName": "Logs", "autoCreateSqlTable": true, "batchPostingLimit": 100, "period": "0.00:00:10", 测试时,该表不存在。我运行了我的应用程序并创建了表,并且我看到了我的日志(21 条记录)。 我再次运行应用程序并尝试写入我添加的一些新日志,但什么也没有写入。表中仅有与之前相同数量的记录 (21) 仍然存在。没有错误或任何东西。 我删除表,再次运行我的应用程序,所有日志都被写入(包括旧的和新的)。以下是我在 Program.cs 中初始化 Serilog 的方法: var builder = WebApplication.CreateBuilder(args); IConfiguration configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .Build(); builder.Host.UseSerilog((context, config) => { config .ReadFrom.Configuration(configuration) .Enrich.FromLogContext(); }); builder.Services.AddEndpointsApiExplorer(); 为什么我的日志只有在表不存在时才会写入?我如何配置 Serilog 每次都写入我的数据库,无论表是否存在? 谢谢 编辑:我将以下内容添加到appsettings.json: "autoCreateSqlDatabase": false, "autoCreateSqlTable": false, 这就是我登录的方式(简单): logger.Information("This should be in the database"); 仍然没有新记录写入数据库。 您想尝试 IHostBuilder 而不是 WebApplication。尝试 这个写在文件中 using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Serilog; using Serilog.Events; using Serilog.Sinks.SystemConsole.Themes; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }) .ConfigureLogging((hostingContext, logging) => { if (Convert.ToBoolean(hostingContext.Configuration.GetSection("IsDebugging").Value)) { var path = hostingContext.Configuration.GetSection("Logging").Get<LogConfiguration>().LoggingPath; Log.Logger = new LoggerConfiguration() .MinimumLevel.Information() .Enrich.FromLogContext() .WriteTo.File(path, rollingInterval: RollingInterval.Day, restrictedToMinimumLevel: LogEventLevel.Information, fileSizeLimitBytes: 6291456, retainedFileCountLimit: 10, rollOnFileSizeLimit: true) .WriteTo.Console(theme: AnsiConsoleTheme.Code) .CreateLogger(); } }) ;

回答 1 投票 0

除非强制处置,否则仅显示第一次记录

我正在使用 vs 2017,编写一个 netcoreapp2.0 库,并使用 UnitTest 项目对其进行测试(XUnit 和 NUnit 给出相同的结果)。 我注意到,除非我强制处置我的 Serilog 记录器,

回答 2 投票 0

在 Serilog 中记录异常时减少堆栈跟踪帧的数量

在 ASP.NET 中记录异常时,堆栈跟踪通常会与您的手臂一样长。例如,我不需要完整的堆栈跟踪在数据库中找不到实体。我想限制它 -

回答 1 投票 0

使用 C# UWP 的 Serilog WriteTo.File

我正在用 C# 编写一个 uwp 应用程序,我想使用 serilog 来写入日志文件。 当我在 .NET Core 控制台应用程序中执行此操作时,它会创建包含所需内容的文件。 在 uwp 中我可以显示...

回答 2 投票 0

Nuget 包 Serilog.Sinks.AwsCloudwatch 抛出 TypeLoadExceptions,因为父类型已密封

我最近将 .NET 6 项目更新到 .NET 8 并将所有包更新到最新版本。 但是,当尝试加载记录器时运行应用程序时,我遇到以下错误

回答 1 投票 0

如何在使用 ForContext 时对 Serilog 调用进行单元测试

我正在使用 Serilog 的 ForContext() 方法根据一般指导向日志事件添加自定义属性 问题在于,从我在源代码中看到的,调用 ForC...

回答 1 投票 0

ASP.NET Core 中的 Serilog Elasticsearch 代理

我目前有一个 .NET 控制台应用程序,我使用下面的部分完整方法将日志记录到 ELK: private static LoggerConfiguration AddElasticSearch(此 LoggerConfiguration con...

回答 1 投票 0

独立 Azure 函数中的 HttpTrigger 创建大量日志噪音

我在 .NET 6.x 上有一个遗留的进程内 azure 函数应用程序,我正在将其转换为在稍后迁移到 .NET 8 之前使用隔离的运行时。转换是按照以下步骤完成的...

回答 1 投票 0

找不到方法:'Serilog.LoggerConfiguration

我的解决方案有一个主记录器,其定义为 Log.Logger = new LoggerConfiguration() .MinimumLevel.Verbose() .WriteTo.LiterateConsole(LogEventLevel.Verbose) .

回答 4 投票 0

Serilog MSSqlServer HTTPs 连接错误

使用.net core 3.1和serilog sql server sink,数据不会写入数据库。 在这里启用 serilog selflog 是我的控制台上出现以下错误: 无法验证 HTTPS 连接。

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.