Skip to content

OTR_LoggingNLog

nishi_74322014 edited this page Oct 27, 2026 · 1 revision

ログ出力方式 (NLog)

概要

  • Open 棟梁は、ログ・ライブラリを log4net から NLog に切り替えられる。
  • LogIF の内部で切り替えるため、ユーザ・コードは変わらない。ログの種類や書式も log4net と同じ方式になる。
  • log4net の開発休止の懸念(Issue #363)を受けて、段階的に移行できるように追加した。

詳細

切り替えの設計

足回り(ライブラリ)だけを入れ替え、設計は変えない方針を採った。

  • log4net と NLog には共通のインターフェイスが無い。
  • DI コンテナで切り替える方法は、構成処理(Program.cs など)をユーザ側に持たせることになるので採らなかった。
  • 依存ライブラリが少ないので、両方をサポートし、LogIF・LogManager の内部で分岐させている。

設定

設定 LogLib で切り替える。

LogLib の値 使われる実装
未設定 log4net
nlog NLog
上記以外 log4net
  • .NET Framework(app.config / Web.config)
<add key="LogLib" value="nlog" />
  • .NET(appsettings.json)
"LogLib": "nlog",

NLog の定義ファイルの例

ロガー名(ACCESS、SQLTRACE、OPERATION など)とターゲット(log4net のアペンダに相当)を対応付ける。

<?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"
      autoReload="true">

  <targets>
    <!-- ログファイル出力用ターゲット -->
    <target xsi:type="File" name="(★ターゲット名1)"
            fileName="(★ファイルパス)" encoding="utf-8" keepFileOpen="true"
            layout="[${date:format=yyyy/MM/dd HH\:mm\:ss,fff}],[${level:uppercase=true}],[${threadid}],${message}"/>
    <!-- (★ターゲット名2)、(★ターゲット名3)も同様 -->
  </targets>

  <rules>
    <!-- Root ロガー相当 -->
    <logger name="*" minlevel="Debug" writeTo="(★ターゲット名1)" />
    <!-- 個別ロガー名 -->
    <logger name="ACCESS" minlevel="Debug" writeTo="(★ターゲット名2)" />
    <logger name="SQLTRACE" minlevel="Debug" writeTo="(★ターゲット名3)" />
  </rules>
</nlog>

コーディング・エージェントに任せる場合

  • スキル opentouryo-logging を使わせる(log4net / NLog の切り替えも扱う)。
  • 切り替えは設定だけで済むので、エージェントにユーザ・コードを書き換えさせない。

参考


Tags: 再構築

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki
開発基盤部会 Wiki

移行管理: DONE / TODO

Clone this wiki locally