コードだけでlog4netを使う
ログ出力のライブラリとしてlog4netやらNLogが人気があります。
紹介しているサイトを見るとすぐXMLの設定を書かせたがるのですが、後から変更するのか?と。
ということで、log4netをコードから設定する方法です。
ログをファイル出力します。
// 大体一つを使いまわすので static readonly で作る // GetLogger内の文字列は好きなのでいい public static readonly log4net.ILog logger = log4net.LogManager.GetLogger( "Log" ); // コンストラクタ的なところで設定を記述する public App() { // 出力先のAppenderを作成します // ファイル出力で、日付やファイルサイズで新規ファイルを作成するタイプ var Appender = new log4net.Appender.RollingFileAppender() { // 出力するファイル名 File = "log.log", // ファイル追記モード (Falseだと上書き) AppendToFile = true, // ログファイル名を固定にする StaticLogFileName = true, // ログファイル名のローテーション番号の順番 CountDirection = 1, // ログファイルの最大世代 MaxSizeRollBackups = 1, // 文字コード指定 Encoding = System.Text.Encoding.UTF8, // ログを新規ファイルに切替える条件 RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Size, // 最大ファイルサイズ MaxFileSize = 3072000, //ログのフォーマット Layout = new log4net.Layout.PatternLayout(@"%d [%t] %-5p %type - %m%n"), }; // 記述した設定を有効にする 忘れないように! Appender.ActivateOptions(); var log = (log4net.Repository.Hierarchy.Logger)logger.Logger ; // 出力レベルの設定 デフォルトはALLなのでコメントアウトしちゃう //log.Level = log4net.Core.Level.All; // 出力先を追加します log.AddAppender( Appender ); // 設定を有効にする 忘れないように! log.Hierarchy.Configured = true; }
後は好きなところでメッセージ出力して下さい。
logger.Debug( "Debug" ); logger.Info( "Info" ); logger.Warn( "Warn" ); logger.Error( "Error" ); logger.Fatal( "Fatal" );
参考:
log4net の Appender を プログラム上で動的に 生成、追加 する 方法
c# - How to configure NHibernate logging with log4net in code, not in xml file? - Stack Overflow
Log4Net設定 MAXファイルサイズ及び日単位で切替え | Wait Cursor
Log4net(6) RollingFileAppender 意味不明パラメータ:CountDirection - shima111の日記