S2Dao.NET を使った諸々を書く前に、S2Dao.NETが使ってる log4net の設定をする。
まず、configファイルの変更をlog4netが検知できるようにするため、 properties/AssemblyInfo.cs に以下の行を加える。
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
そして、app.configを作成し、log4netの設定を書き込む。
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="ConsoleAppender"
type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.SimpleLayout">
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
</configuration>
上のは単なる例なので、一番手間のかからないConsoleAppenderとSuimpleLayoutの組み合わせを使っている。
これで、log4net を利用する準備ができたので、一応確認しておく。
using System;
namespace S2DaoTest
{
class Program
{
private static readonly log4net.ILog logger =
log4net.LogManager.GetLogger(typeof(Program));
/// <summary>
/// エントリポイント
/// </summary>
/// <param name="args">使わない</param>
public static void Main(string[] args)
{
logger.Info("Hello, world");
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
ビルド・実行して、コンソールウィンドウに "INFO - Hello, world" と出力されればOK
但し、注意点。
ユーザコードでlog4netを使うより先にS2Dao/S2Container がlog4net を使用するような場合は、S2Dao/S2Containerを使う前にlog4netの初期化コードを入れなければならない。らしい
using System;
namespace S2DaoTest
{
class Program
{
/// <summary>
/// エントリポイント
/// </summary>
/// <param name="args">使わない</param>
public static void Main(string[] args)
{
// http://s2container.net.seasar.org/ja/setup.html#log4net
System.IO.FileInfo info = new System.IO.FileInfo(
log4net.Util.SystemInfo.AssemblyShortName(
System.Reflection.Assembly.GetExecutingAssembly())
+ ".exe.config"); // アセンブリがdllの場合は".dll.config"
log4net.Config.XmlConfigurator.Configure(log4net.LogManager.GetRepository(), info);
/* S2Dao/S2Container を 使う */
// ...
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}