トップ «前の日記(2005-10-09) 最新 次の日記(2005-10-12)» 編集

Ussy Diary


2005-10-10

[.NET]log4net

log4netのメモ。 incubating-log4net-1.2.9-betaを使用。

参考にさせてもらいました。

ファイル名.yyyy-MM-dd.logになるってのがいいですね(^^。設定ファイルapp.configは以下の通り。

app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <!-- log4net section -->
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
  </configSections>

  <log4net>
    <!-- Console Logging -->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern
      	value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"
         />
      </layout>
    </appender>

    <!-- Rolling Logging -->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="error" />
      <appendToFile value="true" />
      <encoding value="UTF-8" />
      <rollingStyle value="Date" />
      <datePattern value='"."yyyy-MM-dd".log"' />
      <layout type="log4net.Layout.PatternLayout">
        <header type="log4net.Util.PatternString" value="[header]%newline" />
        <footer type="log4net.Util.PatternString" value="[footer]%newline" />
        <conversionPattern
        value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"
        />
      </layout>
    </appender>

    <!-- Default Logger -->
    <root>
      <level value="DEBUG" />
      <appender-ref ref="ConsoleAppender" />
    </root>

    <logger name="Hoge.Foo">
      <level value="ERROR" />
      <appender-ref ref="RollingLogFileAppender" />
    </logger>
  </log4net>
</configuration>

Loggerの取得方法

ILog logger =
   LogManager.GetLogger(typeof(Foo));

FooクラスのNamespaceがHogeであった場合、 Namespace+Class名が一致するロガーを取得(この場合logger nameがHoge.FooであるRollingLogFileAppender)することができます。

<encoding value="UTF-8" />

を指定することで出力文字コードも指定できました。

root(デフォルト)を適用する場合

ILog logger = LogManager.GetLogger(typeof(HogeClass));

一致するものがない場合はrootが適用されます。

header/footer

incubating-log4net-1.2.9-betaではheaderおよびfooterは変更されていて、\r\nが使用できませんでした。 conversionPatternの%newlineを利用すれば大丈夫でしょうか? headerおよびfooterにtypeを指定すればいいみたいです。

<header type="log4net.Util.PatternString" value="[header]%newline" />
<footer type="log4net.Util.PatternString" value="[footer]%newline" />

AssemblyInfo.cs

[assembly: log4net.Config.XmlConfigurator(Watch=true)]

[2005/11/01修正]