【问题标题】:Serilog Seq Sink with Docker is not capturing events带有 Docker 的 Serilog Seq Sink 未捕获事件
【发布时间】:2020-01-28 03:26:17
【问题描述】:

我在 Windows 10 Professional 上的 Net Core 3.1 上运行 Web api 和控制台应用程序。我有控制台、文本文件、json 文件、mssql 和 seq 的接收器。它们每个都记录所有事件,除了 seq 不记录任何事件。

我使用以下命令安装了 Docker:

docker run -d --restart unless-stopped --name seq -e ACCEPT_EULA=Y -v D:\Logs\Seq:/data -p 8081:80 datalust/seq:latest

我使用以下代码创建了记录器:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
    .MinimumLevel.Override("System", LogEventLevel.Warning)
    .Enrich.FromLogContext()
    .Enrich.WithMachineName()
    .Enrich.WithEnvironmentUserName()
    .Enrich.WithProcessId()
    .Enrich.WithThreadId()
    .WriteTo.Console()
    .WriteTo.File($@"{Constants.LogsDirectory}log-.txt", LogEventLevel.Information, rollingInterval: RollingInterval.Day)
    .WriteTo.File(new JsonFormatter(), $@"{Constants.LogsDirectory}log-.json", rollingInterval: RollingInterval.Day)
    .WriteTo.MSSqlServer(DatabaseAccess.ConnectionString(context), nameof(ProcessMessageLog), columnOptions: columnOptions)
    .WriteTo.Seq("http://localhost:8081")
    .CreateLogger();

我在 D:\Logs\Seq 目录中的 seq.json 文件中看到以下内容:

  "api": {
    "listenUris": [
       "http://localhost:8081"
    ],

我还看到每分钟写入一次日志文件,但它们都没有捕获来自 Web api 或控制台应用程序的事件。

当我转到localhost:8081 时,我会收到一条"localhost refused to connect." 消息。

我怀疑我的端口号有误,但我不知道。它们在 1) docker 设置、2) seq.json 值、3) 记录器创建之间应该不同还是相同?

【问题讨论】:

  • 运行docker ps 命令以确保seq 容器状态为up。如果没有尝试使用8081 以外的某个随机端口,因为该端口可能已在使用中,导致 seq 容器退出

标签: docker logging serilog sink seq-logging


【解决方案1】:

看来 Docker 中的 Seq 容器不能很好地与我的微型 SD 卡 D: 驱动器配合使用。我只是从那个切换到我的 C: 驱动器,它工作正常。

【讨论】:

  • 听起来你正在运行 Docker for Windows。你在docker设置里配置Resources -> File Sharing共享你的D盘了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 2013-10-27
  • 2017-06-04
相关资源
最近更新 更多