2016-11-20 5 views
7

(.NETフレームワーク)私はそう遠解決エラー - 型「Serilog.ILogger」私はASP.NETのコアアプリケーションにSeriLogを実装しようとしています

行っ

以下

されている手順のためのサービスを解決することができません。 1))Project.json

に言及下回っ
"Serilog": "2.2.0", 
"Serilog.Extensions.Logging": "1.2.0", 
"Serilog.Sinks.RollingFile": "2.0.0", 
"Serilog.Sinks.File": "3.0.0" 

2を追加しましたあなたのスタートアップのコンストラクタに次の行を追加しました

Log.Logger = new LoggerConfiguration() 
      .MinimumLevel.Debug() 
      .WriteTo.RollingFile(Path.Combine(env.ContentRootPath, "log-{Date}.txt")) 
      .CreateLogger(); 
をクラス -

3)は例外をログに記録しようとすると、約アクションでthis-

ILogger logger; 

    public HomeController(ILogger logger) 
    { 
     this.logger = logger; 
    } 

5)のようにHomeControllerにロガーを注入)

loggerFactory.AddSerilog(); 

4クラス - あなたのスタートアップのconfigureメソッドに次の行を追加しました私のアプリケーションを実行するにはthis-

public IActionResult About() 
    { 
     ViewData["Message"] = "Your application description page."; 

     try 
     { 
      throw new Exception("Serilog Testing"); 
     } 
     catch (System.Exception ex) 
     { 
      this.logger.Error(ex.Message); 
     } 

     return View(); 
    } 

のように、私はエラー -

の下に取得しています

System.InvalidOperationException:'AspNetCore_SeriLog_trial1.Controllers.HomeController'をアクティブ化しようとしているときに、「Serilog.ILogger」タイプのサービスを解決できません。 lambda_methodで Microsoft.Extensions.Internal.ActivatorUtilities.GetService(IServiceProvider SP、タイプタイプ、タイプrequiredBy、ブールisDefaultParameterRequired)
Microsoft.AspNetCore.Mvc.Internal.TypeActivatorCacheで(閉鎖、IServiceProvider、オブジェクト[])で。 でMicrosoft.AspNetCore.Mvc.Controllers.DefaultControllerFactory.CreateController(ControllerContext 文脈)における Microsoft.AspNetCore.Mvc.Controllers.DefaultControllerActivator.Create(ControllerContext controllerContext)でのCreateInstance [TInstance(IServiceProvider サービス・プロバイダ、タイプimplementationType) Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__26.MoveNext()

誰でもこの手伝いをしてもらえますか? Serilogには設定がありませんか?

答えて

12

コントローラで次のことを実行してください。

ILogger<HomeController> logger = null; 
    public HomeController(ILogger<HomeController> _logger) 
    { 
     logger = _logger; 
    } 
+0

私はこれを試してみましたが、エラーを取得 - 'エラー\t CS0308 \t非ジェネリック型「ILoggerです」 – Sanket

+2

arguments'タイプで使用することはできませんあなたはセリのILoggerですインターフェイスを使用しています、そのマイクロソフトのILoggerですインタフェースと交換してみてくださいロギングライブラリにあります。 – dotnetstep

関連する問題