私はセリログを見て、いくつかのテストを実行しています。これまでのところ、コンソールまたはファイルへの書き込みは正常に機能しています。ただし、RavenDb シンクで動作させるには運がありません。これをasp.net 5アプリで機能させようとしています。以下の記事をレビューしました。
http://nblumhardt.com/2015/05/diagnostic-logging-in-dnx-asp-net-5/ http://nblumhardt.com/2013/06/serilog-and-ravendb/
空のアプリから始めて、project.json に次の依存関係を追加しました。
"Serilog.Framework.Logging": "1.0.0-rc1-final-10071",
"Serilog.Sinks.RavenDB": "1.5.4",
"RavenDB.Client": "3.0.30000"
dnxcore も削除しました。
次に、startup.cs に次のコードを追加しました。
public Startup()
{
var documentStore = new DocumentStore()
{
Url = "http://localhost:8080",
DefaultDatabase = "Logs"
}.Initialize();
Log.Logger = new LoggerConfiguration()
.WriteTo.File(@"c:\temp\log.txt")
.WriteTo.Console()
.WriteTo.RavenDB(documentStore)
.CreateLogger();
}
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddSerilog();
app.UseIISPlatformHandler();
app.Run(async (context) =>
{
Log.Information("Hello World");
await context.Response.WriteAsync("Hello World!");
});
}
すべてがファイルとコンソールに正常に記録され、ログ データベースが作成されますが、ログ エントリは RavenDb に保存されません。
さまざまなログレベルを試しました。バッチサイズを小さくしてみました。これはドキュメント ストアのライフサイクルと関係があるのではないかと考えたので、ConfigureServices
メソッドに次のコードを追加しました。
services.AddSingleton(x =>
{
return new DocumentStore()
{
Url = "http://localhost:8080/",
DefaultDatabase = "Test",
}.Initialize();
}
次に、ロガー構成コードをConfigure
メソッドに移動し、DI インスタンスを使用しましたが、それも機能しません。同じものを使用して、他のオブジェクトを RavenDb に保存できますDocumentStore
。
構成設定などを見逃していませんか?