2016-12-25 7 views
0

シナリオ:ASP.NET MVC 6 Webアプリケーション。Serilog:ローリングファイルの動作を取得できません

は、ここでのパッケージはproject.jsonにインポートされます。ここでは

"Serilog": "2.3.0", 
"Serilog.Extensions.Logging": "1.3.1", 
"Serilog.Sinks.RollingFile": "3.2.0", 
"Serilog.Settings.Configuration": "2.2.0" 

appsettings設定

"Serilog": { 
    "Using": [ "Serilog.Sinks.RollingFile" ], 
    "MinimumLevel": { 
     "Default": "Verbose", 
     "Override": { 
      "Microsoft": "Warning", 
      "Microsoft.AspNetCore.Identity": "Debug", 
      "System": "Warning" 
     } 
    }, 
    "WriteTo": [ 
     { 
      "Name": "RollingFile", 
      "Args": { 
       "path": "logger-{Date}.log", 
       "outputTemplate": "{Timestamp:o} [{Level:u3}] ({Application}/{MachineName}/{ThreadId}) {Message}{NewLine}{Exception}", 
       "fileSizeLimitBytes": 16384 
      } 
     } 
    ], 
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ], 
    "Properties": { 
     "Application": "Sample" 
    } 
}, 
ここ

Startup configureメソッドでコンストラクタ

var builder = new ConfigurationBuilder() 
        .SetBasePath(_environment.ContentRootPath) 
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
        .AddJsonFile($"appsettings.{_environment.EnvironmentName}.json", optional: true); 

Configuration = builder.Build(); 

var logger = new LoggerConfiguration() 
       .ReadFrom.Configuration(Configuration) 
       .CreateLogger(); 

私は

を持っているです
loggerFactory.AddConsole(); 
loggerFactory.AddSerilog(); 

ファイルはどこに書き込まれるはずですか?書き込み許可に関連する問題がありますか?

EDIT

は@Sanketの提案に従ったが、まだ動作しません。私はkestrelに切り替えて、コンソール上で動作していたのかどうかを確認しましたが、まだ運がありません。私が何を参照してくださいここにあります:

Now listening on: http://localhost:5000 
Application started. Press Ctrl+C to shut down. 
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1] 
     Request starting HTTP/1.1 GET http://localhost:5000/ 
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1] 
     Executing action method MyCompany.MyProject.Host.Controllers.HomeController.Index MyCompany.MyProject.Host) with arguments (
(null)) - ModelState is Valid 
info: Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ViewResultExecutor[1] 
     Executing ViewResult, running view at path /Views/Home/Index.cshtml. 
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2] 
     Executed action MyCompany.MyProject.Host.Controllers.HomeController.Index (MyCompany.MyProject.Host) in 2614.9118ms 

私はちょうどスタートアップで

public IActionResult Index() { 
    _logger.LogDebug("Index in HomeController called!"); 
    return View(); 
} 

答えて

3

を持つインデックスアクションでホームコントローラーのようにこれは私にとって非常に奇妙である、あなたはthis-

のように転がりファイルのパスを指定することができます
Log.Logger = new LoggerConfiguration() 
    .MinimumLevel.Debug() 
    .WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "Serilog-{Date}.txt")) 
    .CreateLogger(); 

UPDATE:

appsettings.jsonで

"pathFormat": "logger-{Date}.log", 

と、ファイルにpathFormat

"path": "logger-{Date}.log", 

パス引数を変更するには、プロジェクトの場所に作成されます。

アップデート2このlink


を参照してください:スタートアップコンストラクタで

0123へ

var logger = new LoggerConfiguration() 
       .ReadFrom.Configuration(Configuration) 
       .CreateLogger(); 

からthis-

ようserilogロガーを変更

Log.Logger = new LoggerConfiguration() 
       .ReadFrom.Configuration(Configuration) 
       .CreateLogger(); 
+0

はい。私はそれを読んだ。私は設定ベースのロガーを使いたい。私はそれがすべて正しいと思われるが、ログファイルが表示されないようだ。 – Lorenzo

+0

@Lorenzo:更新された回答をチェックする。'path'を' pathformat'に変更してください。 – Sanket

+0

あなたの提案に従いましたが、運はありません。私の編集を見てください – Lorenzo

関連する問題