: 사용자 정의 PatterLayoutConverter의 예를 찾을 수
Custom log4net property PatternLayoutConverter (with index)
. 예제의 경우, 나는 그것을 : KeyLookupPatternConverter라고 불렀다.
의 편의를 위해, 여기있다 : 구성에서
//Log the "sessionid" and "userid" values from our "application settings" object
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p [session = %KLPC{sessionid}] [user = %KLPC{userid}] %m%n"/>
<converter>
<name value="KLPC" />
<type value="Log4NetTest.KeyLookupPatternConverter" />
</converter>
</layout>
나는 폼의에서 설정 "KLPC"를 얻을 말하고 : 여기
namespace Log4NetTest
{
class KeyLookupPatternConverter : PatternLayoutConverter
{
protected override void Convert(System.IO.TextWriter writer, LoggingEvent loggingEvent)
{
//Use the value in Option as a key into the "application settings" stored on the main form.
string setting;
if (Form1.AppSettings.TryGetValue(Option, out setting))
{
writer.Write(setting);
}
}
}
}
그리고 당신이 그것을 구성하는 것이 방법이다 AppSettings.
귀하의 경우에는 구성 파일의 appSettings에서 값을 가져오고 싶습니다. 제공 한 예제를 수정하고 Form의 AppSettings에서 설정을 검색하는 코드를 코드로 대체하여 설정 파일의 응용 프로그램 설정에서 설정을 검색하는 것이 쉽습니다. 이 도로를 탈 경우
, 당신의 AppSettingPatternConverter은 다음과 같이 (안된) 보일 수 있습니다
class AppSettingsPatternConverter : PatternLayoutConverter
{
protected override void Convert(System.IO.TextWriter writer, LoggingEvent loggingEvent)
{
//Use the value in Option as a key into the "application settings" stored on the main form.
string setting = ConfigurationManager.AppSettings[Option];
if (string.IsNullOrWhitespace(setting))
{
setting = string.Format("No setting value for key[{0}]", Option);
}
writer.Write(setting);
}
}
당신이처럼 구성합니다 :
//Log the "Name" setting from the application settings object
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p [name = %AppSetting{Name}] %m%n"/>
<converter>
<name value="AppSetting" />
<type value="Log4NetTest.AppSettingPatternConverter" />
</converter>
</layout>
당신은 당신이 그것을하고 싶은 말 코드를 작성하지 않고. 나는 할 수 있는지는 잘 모르겠지만, 위에 보여준 접근법을 사용하는 것은 꽤나 쉽고 매우 쉽습니다.
원래 요청은 가변 데이터를 파일 스펙에 삽입하는 것이 었습니다. 패턴 레이아웃 변환기가 "ConversionPattern"외부에서 작동합니까?예를 들어, 파일 log4net 속성에서 작동합니까? – Tevya