ASP.NET Coreのコントローラー以外のクラスからログを記録するにはどうすればよいですか?

ビョルン・レッペン

ASP.NET Coreにはロギングのサポートが組み込まれていますが、ドキュメントには、ILogger依存性注入を介して要求することによって、つまりControllerコンストラクターに引数として追加することによって、ロギングを実行する必要があると記載されています

コード全体でメソッドシグネチャまたはコンストラクターをILogger引数で汚染することは、この横断的関心事に対する間違った解決策のように感じます。Androidでは、Logクラスは静的であるため、コードの任意の部分からログを記録するのは簡単です。

コントローラ以外の場所からロギングを行うための良い方法は何でしょうか?

セットする

コンポーネントでのロギングの使用について:

アプリケーションのコンポーネントにログを追加するには、ILoggerFactoryまたはILogger<T>依存性注入を介してを要求します場合はILoggerFactory、要求され、ロガーは、その使用して作成されなければならないCreateLogger方法を。

あなたの場合はCustomClass、データコンテナ(DTOクラス)で、それは伐採について知っているが、データだけを含めることはできません。

「Service」、「Provider」、「Handler」などの名前を持つ他のクラスの場合、ベストプラクティスは、依存性注入を使用してインスタンスを解決することです。一般に、DIはオブジェクトとそのコラボレーターまたは依存関係の間の疎結合を実現するための手法であるため、可能な限りDIを使用する必要があります。詳細については、次の質問が興味深いかもしれません:依存性注入または静的ファクトリを使用する必要がありますか?

したがってILogger<CustomClass>、.NET Coreはデフォルトでコンストラクターの挿入のみをサポートしているため、コンストラクターに追加するだけです(コントローラーの場合と実際には同じ方法です)。

public class CustomClass
{
    private readonly ILogger _logger;

    public CustomClass(ILogger<CustomClass> logger)
    {
        _logger = logger;
    }
}

ASP.NET Coreの組み込みの依存性注入コンテナーは、一時的な依存性を自動的に解決します。したがって、コントローラーに、何かをログに記録Aするクラスを使用する依存関係としてクラスBがある場合、コードは次のようになります。

public class MyController
{
    public MyController(ClassA classA)
    { ... }
}

public class ClassA
{
    public ClassA(ClassB classB)
    { ... }
}

public class ClassB
{
    private readonly ILogger _logger;

    public ClassB(ILogger<ClassB> logger)
    {
        _logger = logger;
    }

    public void DoSomethingWithLogging()
    {
        // use _logger
    }
}

メソッドStartup使用IServiceCollection.Add…する際には、依存関係も登録する必要があることに注意してください

public void ConfigureServices(IServiceCollection services)
{
    // ...

    services.AddTransient<ClassB>();
    services.AddTransient<ClassA>();
}

組み込みのロギングサポートは、.NET Coreが、ロギングに組み込みの抽象化を認識して使用していることを意味します。これは主にILoggerFactoryILoggerProviderインターフェイスによって行われます。

/// <summary>
/// Represents a type used to configure the logging system and create instances of <see cref="ILogger"/> from
/// the registered <see cref="ILoggerProvider"/>s.
/// </summary>
public interface ILoggerFactory : IDisposable

// <summary>
/// Represents a type that can create instances of <see cref="ILogger"/>.
/// </summary>
public interface ILoggerProvider : IDisposable

独自のILoggerProvider実装を使用して、必要なことを実行できる独自のロガーを追加できます。実例としてNLogロガーの実装を確認できます。

のおかげでILoggerFactory、プロジェクト固有の目的でロガーを簡単に構成できます。

あなたのASP.NETコアアプリケーションでのconfigureログには、次のように解決すべきILoggerFactoryConfigure、あなたの方法Startupクラス。ILoggerFactoryこのタイプのパラメーターをConfigureメソッドに追加すると、ASP.NETCoreは依存性注入使用するインスタンスを自動的に提供します

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Asp.net CoreのコントローラーからJavascript変数にJsonデータを入力するにはどうすればよいですか

分類Dev

ASP.NET Coreのコントローラーからハブにあるメソッドを呼び出すにはどうすればよいですか?

分類Dev

asp net core 3.1コントローラーの特定のアクションで基本認証を設定するにはどうすればよいですか?

分類Dev

ASP.NET Core MVCアプリのクラスライブラリからのNLog呼び出しをログに記録するにはどうすればよいですか?

分類Dev

ASP.NET Core 3.0の単体テストでエラーがログに記録されていることを確認するにはどうすればよいですか?

分類Dev

ASP.Net Coreで1つのコントローラーに1つのビューを使用するにはどうすればよいですか?

分類Dev

ASP.NET Core 3.0の別のアセンブリでコントローラーを使用するにはどうすればよいですか?

分類Dev

ASP.NET Coreを使用せずにコントローラーからJavaScriptにJsonデータを送信するにはどうすればよいですか?

分類Dev

ASP.NET Core MVCコントローラーの入力ボタンの値を取得するにはどうすればよいですか?

分類Dev

ASP.NET CoreページからAPIコントローラーオブジェクトを呼び出すにはどうすればよいですか?

分類Dev

ASP.NET CoreでgRPCサービスのグローバル例外ハンドラーを追加するにはどうすればよいですか?

分類Dev

共有コントローラー、ミドルウェアなどのライブラリプロジェクトからASP.NET Core 3.0タイプを使用するにはどうすればよいですか?

分類Dev

ASP.NET WebAPIで認証トークン要求をログに記録するにはどうすればよいですか

分類Dev

ASP.NET Core Swagger(Swashbuckle.AspNetCore)でコントローラーの説明を定義するにはどうすればよいですか?

分類Dev

Linuxの特定のファイルにasp.netコアアプリケーションからのメッセージをログに記録するにはどうすればよいですか?

分類Dev

Asp.netコアMVCのコントローラーで自分のユーザーを取得するにはどうすればよいですか?

分類Dev

コントローラーが存在する場合はコントローラーにルーティングするように(オプションのアクションなしで)ASP.NET Coreルーティングを構成してから、デフォルトルートにフォールバックするにはどうすればよいですか?

分類Dev

ID関連のクラスをメインプロジェクトからマルチレイヤーAsp.Net Core 3.1 MVCのデータレイヤーに移動するにはどうすればよいですか?

分類Dev

-Asp.Net-コントローラーからダイアログを呼び出すにはどうすればよいですか?

分類Dev

ASP.NET WebApiを使用して、ルートでコントローラーのセットを除外するにはどうすればよいですか?

分類Dev

ASP.Net MVCでの単純なDropzoneの実装-コントローラーでデータを取得するにはどうすればよいですか?

分類Dev

コントローラからASP.NETコアビューが存在することを確認するにはどうすればよいですか?

分類Dev

ASP.Net Web APIコントローラーでユーザーの名前を確認するにはどうすればよいですか?

分類Dev

jQueryからASP.NETコントローラーにフォームデータを取得するにはどうすればよいですか?

分類Dev

ブートストラップグリフィコンをASP.Netのasp:Button内に配置するにはどうすればよいですか?

分類Dev

asp net core 3.1を使用してAjax経由でオブジェクトのリストをコントローラーに送信するにはどうすればよいですか?

分類Dev

Ajaxを使用してAsp.netビューからコントローラーにURLIDを送信するにはどうすればよいですか?

分類Dev

ASP.NET MVCのコントローラーメソッドの結果に応じてHTMLを生成するにはどうすればよいですか?

分類Dev

ASP.NET CoreプロジェクトでMVCとSignalRのルーティングを構成するにはどうすればよいですか?

Related 関連記事

  1. 1

    Asp.net CoreのコントローラーからJavascript変数にJsonデータを入力するにはどうすればよいですか

  2. 2

    ASP.NET Coreのコントローラーからハブにあるメソッドを呼び出すにはどうすればよいですか?

  3. 3

    asp net core 3.1コントローラーの特定のアクションで基本認証を設定するにはどうすればよいですか?

  4. 4

    ASP.NET Core MVCアプリのクラスライブラリからのNLog呼び出しをログに記録するにはどうすればよいですか?

  5. 5

    ASP.NET Core 3.0の単体テストでエラーがログに記録されていることを確認するにはどうすればよいですか?

  6. 6

    ASP.Net Coreで1つのコントローラーに1つのビューを使用するにはどうすればよいですか?

  7. 7

    ASP.NET Core 3.0の別のアセンブリでコントローラーを使用するにはどうすればよいですか?

  8. 8

    ASP.NET Coreを使用せずにコントローラーからJavaScriptにJsonデータを送信するにはどうすればよいですか?

  9. 9

    ASP.NET Core MVCコントローラーの入力ボタンの値を取得するにはどうすればよいですか?

  10. 10

    ASP.NET CoreページからAPIコントローラーオブジェクトを呼び出すにはどうすればよいですか?

  11. 11

    ASP.NET CoreでgRPCサービスのグローバル例外ハンドラーを追加するにはどうすればよいですか?

  12. 12

    共有コントローラー、ミドルウェアなどのライブラリプロジェクトからASP.NET Core 3.0タイプを使用するにはどうすればよいですか?

  13. 13

    ASP.NET WebAPIで認証トークン要求をログに記録するにはどうすればよいですか

  14. 14

    ASP.NET Core Swagger(Swashbuckle.AspNetCore)でコントローラーの説明を定義するにはどうすればよいですか?

  15. 15

    Linuxの特定のファイルにasp.netコアアプリケーションからのメッセージをログに記録するにはどうすればよいですか?

  16. 16

    Asp.netコアMVCのコントローラーで自分のユーザーを取得するにはどうすればよいですか?

  17. 17

    コントローラーが存在する場合はコントローラーにルーティングするように(オプションのアクションなしで)ASP.NET Coreルーティングを構成してから、デフォルトルートにフォールバックするにはどうすればよいですか?

  18. 18

    ID関連のクラスをメインプロジェクトからマルチレイヤーAsp.Net Core 3.1 MVCのデータレイヤーに移動するにはどうすればよいですか?

  19. 19

    -Asp.Net-コントローラーからダイアログを呼び出すにはどうすればよいですか?

  20. 20

    ASP.NET WebApiを使用して、ルートでコントローラーのセットを除外するにはどうすればよいですか?

  21. 21

    ASP.Net MVCでの単純なDropzoneの実装-コントローラーでデータを取得するにはどうすればよいですか?

  22. 22

    コントローラからASP.NETコアビューが存在することを確認するにはどうすればよいですか?

  23. 23

    ASP.Net Web APIコントローラーでユーザーの名前を確認するにはどうすればよいですか?

  24. 24

    jQueryからASP.NETコントローラーにフォームデータを取得するにはどうすればよいですか?

  25. 25

    ブートストラップグリフィコンをASP.Netのasp:Button内に配置するにはどうすればよいですか?

  26. 26

    asp net core 3.1を使用してAjax経由でオブジェクトのリストをコントローラーに送信するにはどうすればよいですか?

  27. 27

    Ajaxを使用してAsp.netビューからコントローラーにURLIDを送信するにはどうすればよいですか?

  28. 28

    ASP.NET MVCのコントローラーメソッドの結果に応じてHTMLを生成するにはどうすればよいですか?

  29. 29

    ASP.NET CoreプロジェクトでMVCとSignalRのルーティングを構成するにはどうすればよいですか?

ホットタグ

アーカイブ