Asp.Netコアアドバンス(2) - 統合log4netの

  組み込みのログAPIのさまざまなAsp.Netコアサポートは、他のサードパーティのロギングをサポートしています。ConsoleLogger、DebugLogger、EventSourceLogger:CreateDefaultBuilderと呼ばれるプログラムファイルのエントリでは、当社の新しいプロジェクトの後、デフォルトの操作は、次のログプロバイダーを追加します。

  私が仕事で使うロギング・コンポーネントのほとんどは、我々がAsp.Netコアでどのように統合されたlog4netのを見て、log4netのです。

  まず、我々は、Nugetのlog4netのとMicrosoft.Extensions.Logging.Log4Net.AspNetCoreによってインストールをlog4netのアセンブリを追加する必要があります。

  その後、我々は、プロジェクトのconfigフォルダに、プロファイルlog4net.configを導入します

<?xmlのバージョン= " 1.0 "エンコード= " UTF-8 "?> 
<log4netの> 
  <! -出力のいくつかのアペンダを定義します- > 
  <アペンダ名= " rollingAppender "タイプ=の" log4net.Appender.RollingFileAppender " > 
    <ファイル=値ログ\ log.txtという /> 

    <! -追加のログの内容- > 
    <appendToFile値= trueに /> 

    <! -複数のスレッドがログイン書き込むことはできません防ぐため、関係者は非スレッドセーフ- > 
    タイプ=の<lockingModel log4net.Appender。FileAppender + MinimalLock " />

    < -になります!一度|サイズ|日付|コンポジット- > 
    - < -コンポジットのサイズと日付の組み合わせです!> 
    <RollingStyle値= コンポジット /> 

    バックアップファイルがある場合は- <!ファイル名+サフィックス- > 
    <datePattern値= YYYYMMDD.txt  /> 

    <! - > -ログの最大数は、最新のです
    。<! -サイズとしてrollingStyleノードは、値のみを持つことができるときログ- > 
    <! -コンポジットとしてrollingStyleノード、値が日次ログがある- > 
    <maxSizeRollBackups値= " 20 " /> 

    < -台利用可能:! KB | MB | GB - > 
    <maximumFileSize値= " 3メガバイト" /> 

    <! - trueに設定され、> -現在のほとんどのログファイル名は、常にセクション・ファイルの名前です
    = <staticLogFileName値trueに" /> 

    <! - > - INFOとERROR間の出力レベルログ
    <フィルタタイプ= " log4net.Filter.LevelRangeFilter " > 
      <PARAM NAME = " LevelMin "値= " ALL " /> 
      の<paramの名前を= " LevelMax "値= " FATAL " /> 
    </フィルタ> 

    <! -それはと組み合わせる必要があり、第1のフィルタリングのみWARN、他方が他方の第2のログ出力を拒否- > 
    <! - 
        <フィルタタイプ= " log4net.Filter.LevelMatchFilter " > 
            <paramの名前= " LevelToMatch "値= " WARN " /> 
        </フィルタ> 
        <フィルタタイプ= " log4net.Filter.DenyAllFilter " /> - > 

    <レイアウトタイプ= " log4net.Layout.PatternLayout " > 
      <conversionPattern値= " %日付[%スレッド] %-5level%ロガー- %メッセージ%改行" /> 
    </レイアウト> 
  </アペンダ> 


  < -レベル:!OFF> FATAL> ERROR> WARN> INFO> DEBUG> ALL - > 
  <ルート> 
    <優先順位の値= " ALL " /> 
    <レベル値= " ALL " />
    <appender-REF  REF = " rollingAppender " /> 
  </ルート> 
</ log4netの>

  その後ConsoleLogger、DebugLoggerまたはEventSourceLoggerを使用しない場合、メソッドは空のClearProvidersデフォルトのロギング・コンポーネントに使用することができる、プログラムでログファイルを設定し、Microsoftがロギングシステム、ログレベルの始まりが来るかaddFilterシステムを濾過します。具体的には以下のコードを参照して

パブリック 静的 IWebHostBuilder CreateWebHostBuilder(文字列 []引数)=> 
    WebHost.CreateDefaultBuilder(引数)
    .ConfigureLogging((文脈、loggingBuilder) => 
    { 
        // loggingBuilder.ClearProviders(); 
        loggingBuilder.AddFilter(" システム" 、LogLevel.Warning)。
        loggingBuilder.AddFilter(マイクロソフト、LogLevel.Warning); //システムを濾別し、マイクロソフトのシステムは、次の警告ログにレベルの始まりを来る 
        loggingBuilder.AddLog4Net(設定/ log4net.config ); 
    })
    .UseStartup <起動時>();

  log4netの設定後、またはILoggerFactory ILoggerです<Starup>置換することができる具体的には、以下の、ロギングのためILoggerFactory ILoggerです<T>を使用してもよいです。

公共 ボイド設定(IApplicationBuilderアプリ、IHostingEnvironmentのENV、ILoggerFactoryたLogFactory)
{ 
    // ILoggerですロガー= logFactory.CreateLogger(typeof演算(Log4NetLogger))。
    ILoggerですロガー= logFactory.CreateLogger <起動時> (); 
    logger.LogError(これは最初のエラーです)。
    logger.LogInformation(これは最初の情報です); 
    logger.LogDebug(これは最初のデバッグです); 
    logger.LogWarning(これは最初の警告です)。
    logger.LogInformation(System.Diagnostics.Process.GetCurrentProcess()ProcessNameの。); 
}

  上記は、コントローラで同じでも、ログレコードをスタートアップフォルダにあるコールログを呼び出すことができます。

プライベート 読み取り専用IStudentRepository _studentRepository。

プライベート 読み取り専用 ILoggerです<にHomeController> _logger。

// 构造函数注入
公衆にHomeController(IStudentRepository studentRepository、ILoggerです<にHomeController> ロガー)
{ 
    _studentRepository = studentRepository。
    _logger = ロガー。
}

  あなたがプログラムにログを作成したい場合は、DIコンテナから実際のILoggerです列を取得する必要があります

公共の静的な無効メイン文字列[]引数)
{
  VARの
ホスト= CreateWebHostBuilder(引数).Build();   VaRのロガー= host.Services.GetRequiredService <ILoggerです<プログラム>> ();   logger.LogInformation(" データベースを播種しました。" );   host.Run();
}

  

  

おすすめ

転載: www.cnblogs.com/jesen1315/p/11067231.html