C# 无法使用Serilog MongoDb接收器登录

C# 无法使用Serilog MongoDb接收器登录,c#,.net,mongodb,serilog,C#,.net,Mongodb,Serilog,我们在AWS中安装了dev mongodb服务器。我能够使用Mongo Shell和C#驱动程序插入数据。但是,我无法使用Serilog MongoDb接收器实现这一点 使用直接MongoDb C#API的工作代码: var-client=newmongoclient(“mongodb://”); var database=client.GetDatabase(“日志”); var collection=database.GetCollection(“prj”); 列表日志数据=新列表(); 添

我们在AWS中安装了dev mongodb服务器。我能够使用Mongo Shell和C#驱动程序插入数据。但是,我无法使用Serilog MongoDb接收器实现这一点

使用直接MongoDb C#API的工作代码:

var-client=newmongoclient(“mongodb://”);
var database=client.GetDatabase(“日志”);
var collection=database.GetCollection(“prj”);
列表日志数据=新列表();
添加(“requestxml”);
LogData.Add(“responsexml”);
var文档=新的BsonDocument{
{“TraceID”,“123”},
{“ModuleName”,“Booking”},
{“MethodName”,“”},
{“LogFormat”,“JSON”},
{“LogDescription”,“Sample description”},
{“LogType”,“RequestResponse”},
{“LogData”,string.Join(“,”,LogData)}
};
收藏.插入器(文件);
使用Serilog的非工作代码:

var log=new LoggerConfiguration()
.WriteTo.MongoDB(“mongodb:///logs,集合名称:“prj”,期间:TimeSpan.Zero)
.CreateLogger();
列表日志数据=新列表();
添加(“requestxml”);
LogData.Add(“responsexml”);
日志信息(“{TraceID}{ModuleName}{ClassName}{MethodName}{LogFormat}{LogDescription}{LogType}{@LogData}”,“2431”,“CT”,“,”,“,”,“JSON”,“Booking”,“RequestResponse”,“LogData”);
此外,我没有得到任何例外,这是没有帮助的

.NET Framework: 4.5.2
Serilog: 2.8.0
MongoDb Driver: 2.9.2
Serilog MongoDb Sink: 4.0.0

这意味着,只要有可能,Serilog将接受异常。如果需要记录器在失败时抛出,可以使用
new LoggerConfiguration().AuditTo…
而不是
new LoggerConfiguration().WriteTo…

在您的情况下,我猜问题是:
.WriteTo.MongoDB(…,句点:TimeSpan.Zero)
。MongoDB接收器继承自的PeriodicBatchingSink


然后,如果它仍然不起作用,我将检查您的
batchPostingLimit
参数。默认值为50,这意味着您必须先发出50条日志消息,然后它才会发送它们。将其设置为1可立即发送每条日志消息。

删除句点参数不会产生任何影响。另外,您能否提供一个关于如何使用
AuditTo
方法的示例代码?我在网上找不到任何与此相关的内容。您使用AuditTo的方式与使用WriteTo的方式相同,但在本例中,库作者没有提供扩展方法。这意味着您将调用
new LoggerConfiguration().audito.Sink(new MongoDBSink(…)
。用另一个您可以检查的东西更新了我的答案。解决了这个问题后,我忘记提到的是这是一个控制台应用程序。在最后添加
Console.ReadLine()
成功了,因为它给了serilog足够的时间来完成工作。所以,你是对的,这确实与周期/执行时间有关。