Serilog:无法使用MongoDb接收器登录MongoDb

use*_*862 5 .net mongodb serilog

我有一个本地MongoDb数据库实例(通过从Windows命令行运行mongod创建),以及一个简单的控制台程序,它尝试使用Serilog及其MongoDb接收器将字符串记录到MongoDb数据库:

        var log = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .WriteTo.ColoredConsole()
            .WriteTo.MongoDB("mongodb://localhost/mydb")
            .CreateLogger();

        log.Fatal("Fatal message");
Run Code Online (Sandbox Code Playgroud)

"致命消息"消息正确写入控制台,但不是我的MongoDb数据库.

我目前的MongoDb数据库是"mydb".根据"show collections",我只有集合system.indexes和testData,而"db.testData.find()"什么也没有产生.

Serilog站点说使用连接字符串"mongo:// mydb/log",但是抛出异常"MongoDB.Driver.dll中发生了'System.FormatException'类型的未处理异常".我在代码中使用的连接字符串在MongoDb站点上指定,网址为http://docs.mongodb.org/manual/reference/connection-string/

如何使用Serilog登录MongoDb?

Nic*_*rdt 6

您可能只是遇到默认(两秒钟?)缓冲延迟 - 如果您在Windows中关闭控制台应用程序,它会硬终止程序,因此无法始终刷新缓冲区.如果是这样,在关闭应用程序之前等待几秒钟将解决此问题.

否则,解决Serilog中所有接收器调试的方法是设置SelfLog.Out:

SelfLog.Out = Console.Error;
Run Code Online (Sandbox Code Playgroud)

这将打印接收器引发的任何异常,允许您快速放大错误,如果它就在那里.