Log4Net設定 MAXファイルサイズ及び日単位で切替え

Log4Netは便利なログライブラリです。
最近は設定のやり方もネット上に増えて来ましたが、自分も残しておきたいと思います。

1 .Log4Netのダウンロード

ダウンロードサイトから取得します。zipファイルになっているのでダウンロード後に解凍します。

2 .参照の追加でLog4Net.dllをプロジェクトに読み込む

ダウンロードしたファイルを解凍すると.NETFlameWorkのバージョン毎にフォルダ分けされているので、環境に合ったdllを読み込みます。

3. AssemblyInfo.vbに設定情報ファイルの扱い方を記述する。

AssemblyInfo.vbは、VisualStudio2010のVBではMy Project内にあります。
ファイルの一番最後に以下のように記述します。

<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="log4net.config", Watch:=True)>

設定の意味は・・・
ConfigFile : 設定ファイルを「log4net.config」として、カレントフォルダ直下に配置
Watch:設定ファイルの変更監視の有無

4. log4net.configファイルに振る舞いを記述する。

log4net.configを作成します。

以下では、日単位または1MBを超えた場合も新規にログファイルを用意します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <File value=".\Log\SystemLog" />
  <appendToFile value="true" />
  <rollingStyle value="composite" />
  <staticLogFileName value="false" />
  <datePattern value='"."yyyy-MM-dd".log"' />
  <MaxSizeRollBackups value="20" />
  <MaximumFileSize value="1MB" />
  <layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
  </appender>
  <root>
   <level value="INFO" />
   <appender-ref ref="RollingLogFileAppender" />
  </root>
 </log4net>
</configuration>

各パラメタの意味は・・・
File = ログを出力するパスを指定
appendToFile = 追記モードの設定
   True:追記
   False:上書き
rollingStyle = ログを新規ファイルに切替える条件を指定します。
   Once :プログラム実行毎に切換
   Size:MaximumFileSize で指定したサイズに達した場合に切換
   Date:日が変わる毎に切換
   Composite:SizeとDateを合わせた条件で切換
staticLogFileName = ログファイル名を固定にするかを指定
   True:ファイル名固定
   false:rollingStyle とdatePatternに基づいたファイル名
datePattern =rollingStyleがdateまたはCompositeの際にファイル名に付与される文字列。
MaxSizeRollBackups = ファイルを切替えるマックス数。無限にする場合はマイナスを指定
MaximumFileSize  = rollingStyle がSizeまたはCompositeの時の最大ファイルサイズ。
   ファイルサイズを超えると、以下の様なファイル名で作成されていきます。
   SystemLog.2013-05-27.log   ←1ファイル目
   SystemLog.2013-05-27.log.1  ←2ファイル目

5.プログラム内から書いてみる。

Public Enum LogLevel
   INFO
   WARNING
   ERR
   FATAL
End Enum

Public Class LogUtil
   ‘Log4netオブジェクトの宣言
   Private Shared _log As log4net.ILog _
      = log4net.LogManager.GetLogger( _
      System.Reflection.MethodBase.GetCurrentMethod.DeclaringType)

‘書込
Public Shared Sub Write( _
   ByVal msg As String, _
   ByVal level As LogLevel, Byval ex As Exception)

   Select Case level
      Case LogLevel.INFO
         _log.Info(msg)

      Case LogLevel.WARNING
         _log.Warn(msg, ex)

      Case LogLevel.ERR
         _log.Error(msg, ex)

      Case LogLevel.FATAL
         _log.Fatal(msg, ex)

   End Select

   End Sub

End Class

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中