いつもどこかでデスマーチ♪

不定期に、私の日常を書き込みしていきます。

.net Core 3.1 の NLogではまった… その1

2020年06月09日 10時22分36秒 | .NET系
その1:https://blog.goo.ne.jp/pianyi/e/63d643b66739ea286e74bac9b39b5c2a
その2:https://blog.goo.ne.jp/pianyi/e/edf5b129ab13a7cef41c86880d6efd62
その3:https://blog.goo.ne.jp/pianyi/e/9b6017142366df6ed30ec21f6402511a

.netCore3.1 を使って初のアプリケーションを作成しているが、いきなりはまった…
NLog でログ出力するが、ファイルに出力されるが、VS出力ウィンドウに表示されない…

とりあえず結論! 下記の様に「xsi:type="Debugger"」を使うべし!

<target xsi:type="Debugger" name="LogConsole" layout="${longdate} [${uppercase:${level:padding=-5}}] ${message} ${exception:format=Message, Type, ToString:separator=\r\n}" />


これに気づくまで半日以上かかったよ…orz
ASP.net の記述はいっぱいあるし、過去の記述はいっぱいあったが、全部不発…何が悪かったのか…
【てか、.net Core と ASP.net Core は違うんだからどう検索して良いかわからんわ!】「-ASP」って入れればええんか…

config の設定系は ここを見て試していくしかないかね…(ターゲット、レイアウト、レイアウト用バインド変数があるから試すしかない!)
https://nlog-project.org/config/


以下手順:
1.各パッケージをインストール
・NLog (v4.7.2)
・NLog.Config (v4.7.2)
(ちなみに:「NLog.Extensions.Logging」と「Microsoft.Extensions.Logging.Console」を使えっていうところもあるけど、使わなくてもできた…正しい設定方法が全く分からん…)

2.NLog.config を記述する (NLog.Config をインストールしたら、勝手にファイルができるはず…)
ファイルが存在しない場合:
 2.1. プロジェクト直下に NLog.config ファイルを作成する
 2.2. プロパティを開き「出力ディレクトリにコピー」 を 「新しい場合にはコピーする」または「常にコピーする」に設定しておく。

コメントの!は自分で直してね
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" internalLogFile="${basedir}/logs/nlog-internal.log">
  <targets async="true">
      <!-- VS の出力ウィンドウに出すには Debugger に変わったらしい -->
      <target xsi:type="Debugger" name="LogConsole" layout="${longdate} [${uppercase:${level:padding=-5}}] ${message} ${exception:format=Message, Type, ToString:separator=\r\n}" />
      <!-- ファイル出力+ローテーション -->
      <target
        xsi:type="File"
        name="LogFile"
        fileName="${basedir}/logs/aiueo.log"
        encoding="UTF-8"
        lineEnding="CRLF"
        archiveFileName="${basedir}/logs/aiueo_{#}.zip"
        archiveEvery="Day"
        archiveNumbering="DateAndSequence"
        archiveDateFormat="yyyyMMdd"
        archiveAboveSize="5242880"
        maxArchiveFiles="10"
        enableArchiveFileCompression="true"
        layout="${longdate} [${threadid:padding=8}] [${uppercase:${level:padding=-5}}] ${message} ${exception:format=Message, Type, ToString:separator=\r\n}" />
  </targets>
  <rules>
      <!-- ログ出力先の指定 -->
      <logger name="*" minlevel="Debug" writeTo="LogConsole" />
      <logger name="*" minlevel="Debug" writeTo="LogFile" />
  </rules>
</nlog>



3.いつも通りにログ出力(MVVM はまだ苦手です…)

//フィールドに宣言して
private void Application_Startup(object sender, StartupEventArgs e)
{
    try
    {
        // いつも通りに使う
        Logger.Debug("デバッグ");
        Logger.Info("インフォ");
        Logger.Warn("ワーニング");
        Logger.Error("エラー");
    }
    catch (Exception ex)
    {
        // 例外は第1引数
        Logger.Error(ex, "例外発生");
    }
}




Entity Framework Core でSQLログが出ないのはまた別の話…orz
これも ASP.net Core ばかり出てきて…


検索用: .net Core 3.1 Window WPF ログ出力 デバッグウィンドウ 出力ウィンドウ ログが出ない 出ない 出力されない ASPじゃない 普通の.netCore NLog
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Let’s Encrypt でものすごく... | トップ | .net Core 3.1 の NLogではま... »

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

.NET系」カテゴリの最新記事