4

クライアント側のログ記録に Serilog と JSNLog を使用する .NET Core プロジェクトがあります。クライアントからサーバーに JSON オブジェクトを渡し、Serilog を使用してログに記録すると、ログに記録された JSON オブジェクトは空になります。

非常に奇妙なことは、デバッガーが接続されている場合、JSON が正常にログに記録されることです。

例えば:

デバッグ中に私は得る:

[11:00:01 FTL] this works
[11:00:02 INF] Request finished in 342.1967ms 200 text/plain
[11:00:02 FTL] "testMessage": "this is an error"
[11:00:02 INF] Request finished in 374.7837ms 200 text/plain

Crtl+F5 の場合:

[10:59:14 FTL] this works
[10:59:14 INF] Request finished in 253.3403ms 200 text/plain
[10:59:15 FTL] [[[]]]
[10:59:15 INF] Request finished in 267.2553ms 200 text/plain

問題が Serilog にあるのか JSNLog にあるのかはわかりませんが、助けていただければ幸いです。

これを再現するために、非常に単純なサンプル アプリを作成しました。デフォルトの .NET Core Webapp を使用する

依存関係は次のとおりです。 依存関係

Startup.cs で:

public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();

            Log.Logger = new LoggerConfiguration()
                .WriteTo.Console().CreateLogger();
        }

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddSerilog();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseJSNLog(new LoggingAdapter(loggerFactory));

            app.UseStaticFiles();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
}

そして私のフロントエンドで:

<script src="~/lib/jsnlog.js/jsnlog.min.js"></script>
    <script>
            JL().fatal({ testMessage: "this is an error" });
            JL().fatal("this works");
        </script>
4

1 に答える 1