マシン名を取得するクラスを作成します。
using System;
using System.IO;
using log4net.Layout.Pattern;
namespace YourNameSpace.Converters
{
public class MachinePatternConverter : PatternLayoutConverter
{
protected override void Convert(TextWriter writer, log4net.Core.LoggingEvent loggingEvent)
{
writer.Write(Environment.MachineName);
}
}
}
次に、log4net 構成を次のように設定します。
<layout type="log4net.Layout.PatternLayout">
<converter>
<name value="machine" />
<type value="YourNameSpace.MachinePatternConverter" />
</converter>
<conversionPattern value="%date [%thread] %level %logger %machine" />
</layout>
このアプローチは再利用でき、必要な方法で情報を管理できるので気に入っています。たとえば、IPアドレスをログに記録したい場合は、同じことを行い、コンバーターを次のように作成します。
public class IPPatternConverter : PatternLayoutConverter
{
protected override void Convert(TextWriter writer, log4net.Core.LoggingEvent loggingEvent)
{
if (HttpContext.Current == null)
return;
writer.Write(HttpContext.Current.Request.UserHostAddress);
}
}
リンクの詳細: http://devstuffs.wordpress.com/2012/01/12/creating-your-own-pattern-layout-converter-for-log4net/