C# Serilog到MongoDb的日志记录在开发环境之外不工作

C# Serilog到MongoDb的日志记录在开发环境之外不工作,c#,mongodb,serilog,C#,Mongodb,Serilog,我已经使用Serilog登录mongodb很长一段时间了,没有任何问题,最近发生了一些变化,我不能再这样做了。。。除mongodb外,任何水槽都可以正常工作 事实上,mongodb在我的开发环境中甚至工作得很好。我已经确认我可以从没有正确登录到mongodb的生产机器访问mongo数据库 这是我用来设置初始记录器的代码: Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override(&quo

我已经使用Serilog登录mongodb很长一段时间了,没有任何问题,最近发生了一些变化,我不能再这样做了。。。除mongodb外,任何水槽都可以正常工作

事实上,mongodb在我的开发环境中甚至工作得很好。我已经确认我可以从没有正确登录到mongodb的生产机器访问mongo数据库

这是我用来设置初始记录器的代码:

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.EventLog(Assembly.GetEntryAssembly()?.GetName().Name, manageEventSource: true,
restrictedToMinimumLevel: LogEventLevel.Debug
)
.WriteTo.File(path: $@"C:\ProgramData\CSWTestTools\logs\{Assembly.GetEntryAssembly()?.GetName().Name}_Log.txt",
rollingInterval: RollingInterval.Day,
restrictedToMinimumLevel: LogEventLevel.Debug
)
.CreateLogger();
之后,我为mongo数据库执行连接字符串设置,并将记录器重新配置为:

Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.Enrich.FromLogContext()
.Enrich.WithProperty("Source", Environment.MachineName)
.Enrich.WithProperty("Username", Environment.UserName)
.Enrich.WithProperty("EnvironmentName", environment)
.Enrich.WithProperty("AssemblyVersion", Assembly.GetEntryAssembly()?.GetName().Version)
.WriteTo.Logger(Log.Logger) //redirect to the original log
.WriteTo.MongoDBCapped(mongoDbLogConnectionSettings.ConnectionString,
LogEventLevel.Debug,
collectionName: $"{mongoDbLogConnectionSettings.CollectionName}_{Assembly.GetEntryAssembly()?.GetName().Name}"
)
.CreateLogger();
所有这些代码在我的VisualStudio机器上都可以正常工作,但当我将此应用程序作为服务安装时,除了mongodb之外,所有日志都可以正常工作

为什么会这样

编辑:我忘了提到,作为一个故障排除步骤,我在生产机器上打开MongoDb Compass只是为了检查它是否可以看到mongo数据库和我正在使用的连接字符串的数据。在生产机器上加载的所有数据与在开发机器上加载的数据相同


我有点相信这是Serilog和公司防火墙的问题,但不能很准确地指出问题所在。我甚至通过Git提交来确认所使用的代码或包没有任何变化,因为这在不久前就起作用了。

netstat-nao | findstr“27017”
,是否在生产机器上连接到mongodb?@Zen,是的,我刚刚运行了那个命令,看到两个TCP连接指示在那个端口上建立。。。我的开发机器显示的结果与您可以检查此链接以调试Serilog异常的结果相同。顺便说一下,日志的defautl批大小是50,您可以将其设置为较小的值,以查看日志数据是否在缓冲区中。@Zen,这就是问题所在,我已经将Serilog异常输出到文件中,并且没有生成异常。。。我看到了一个关于调试级别重写在子日志记录器上不受支持的警告,但这只是一个警告,我已经解决了这个问题。。。现在没有产生任何问题。。。我想我在MongoDb的水槽里发现了某种虫子。。。我去报告这件事,看看结果如何it@eerick你能找到解决这个问题的办法吗?顺便说一下,我认为问题在于使用最小级别作为调试。它在发布时不起作用。我的代码不起作用,我使用LogInformation和LogWarning,最小级别是信息无法找到解决方案:(