Asp.netコア2.0でlog4netを使用する方法

ASP.NET Core ログ インターフェイス用のサード パーティの log4net アダプターがあります。

ILoggerFactory を渡すだけです。 あなたの Startup に クラス、次に呼び出し

loggerFactory.AddLog4Net();

構成を配置します。したがって、ボイラープレート コードを記述する必要はありません。

詳細はこちら


次のコードを使用してファイルを正常にログに記録できます

public static void Main(string[] args)
{
    XmlDocument log4netConfig = new XmlDocument();
    log4netConfig.Load(File.OpenRead("log4net.config"));
    var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(),
               typeof(log4net.Repository.Hierarchy.Hierarchy));
    log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);

    BuildWebHost(args).Run();
}

ウェブサイトのルートにある log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    <file value="C:\Temp\" />
    <datePattern value="yyyy-MM-dd.'txt'"/>
    <staticLogFileName value="false"/>
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <maxSizeRollBackups value="100"/>
    <maximumFileSize value="15MB"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level App  %newline %message %newline %newline"/>
    </layout>
  </appender>
    <root>
      <level value="ALL"/>
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
</log4net>

まだ解決策をお探しですか?このリンクから入手しました。

この 2 行のコードを「プログラム クラス」の「public static void Main」メソッドの先頭に追加するだけで済みました。

 var logRepo = LogManager.GetRepository(Assembly.GetEntryAssembly());
 XmlConfigurator.Configure(logRepo, new FileInfo("log4net.config"));

はい、追加する必要があります:

<オール>
  • NuGet を使用した Microsoft.Extensions.Logging.Log4Net.AspNetCore。
  • log4net.config という名前のテキスト ファイルで、ファイルのプロパティ ([出力ディレクトリにコピー]) を [新しい場合はコピー] または [常にコピー] に変更します。
  • また、出力コンソールに記録されるすべてのものが選択したアペンダーに記録されるように、asp.net コア アプリケーションを構成することもできます。このサンプル コードを github からダウンロードして、どのように構成したかを確認することもできます。 /P>

    No