#概要
・C#でのログ出力について、備忘的な感じで残す。
・今のところ、ほぼ参考先のままなので、後で自分なりの設定が決まったら修正する。
##開発環境
・Visual Studio 2019 Community
##詳細
関連ソース一覧
ファイル | 概要 |
---|---|
AssemblyInfo.cs | 最初からあるファイル、ログの定義ファイルの場所を記述しておく |
Log4net.xml | ログの定義を記述するファイル※ |
※プロパティの「出力ディレクトリにコピー」を「常にコピーする」にしておく。 |
AssemblyInfo.cs
using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
// Log4Net用設定ファイル
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "./Resources/Log4net.xml", Watch = true)]
↑最後のところに追加する。
AssemblyInfo.cs
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<appender name="systemlog" type="log4net.Appender.RollingFileAppender">
<appendToFile value="true" />
<StaticLogFileName value="false" />
<rollingStyle value="Date" />
<!-- 出力先 -->
<file value="C:\logs\systemLog-" />
<DatePattern value='yyyyMMdd".log"' />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="Error" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<ConversionPattern value="%date [%thread] [%-5level] %logger - %message%n" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="systemlog" />
</root>
</log4net>
</configuration>
##動作確認
ログ呼び出し.cs
ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().Name);
log.Info("INFOで出力");
log.Warn("WARNで出力");
ログファイルにはこんな感じで出力される
2021-11-16 22:55:11,692 [1] [INFO ] DBAccess - INFOで出力
2021-11-16 22:55:11,700 [1] [WARN ] DBAccess - WARNで出力
↑「DBAccess」のところは、呼び出し元の関数。
##感想
log4jと使い方的にはそこまで変わらないかなという印象でした。
参考