콘솔 응용 프로그램에서 log4net을 사용하고 있습니다.app.config에서 log4net Appender의 유형 이름을 매개 변수화 할 수 있습니까?
구성 파일 : 내 구성 파일은 내가 입력에서 파일 이름을 얻을 수 있도록
<appender name="CustomRollingFileAppender" type="MyApp.UTIL.CustomRollingFileAppender">
<threshold value="ALL"/>
<param name="file" value=""/>
<param name="appendToFile" value="false"/>
<param name="maximumFileSize" value="20000KB"/>
<param name="maxSizeRollBackups" value="200"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%-5.5level] %logger - %message%newline"/>
</layout>
</appender>
무시 파일 매개 변수 :이 마법처럼 작동하고,하지만 난을 변경해야
namespace ConsoleApplicationTemplate.UTIL
{
public class CustomRollingFileAppender : log4net.Appender.RollingFileAppender
{
public override string File
{
get { return base.File; }
set
{
//Filename string taken as Input
base.File = Program.options.LogFile;
}
}
}
}
매개 변수 유형 태그 안에 첨부 자. 주변을 검색하여 구성 파일 내에서 속성을 사용할 수 있는지 확인했습니다. 그래서 나는 다음과 같은 내 설정 파일을 수정 한 :
<appender name="CustomRollingFileAppender" type="%property{ApplicationName}.UTIL.CustomRollingFileAppender">
<threshold value="ALL"/>
<param name="file" value=""/>
<param name="appendToFile" value="false"/>
<param name="maximumFileSize" value="20000KB"/>
<param name="maxSizeRollBackups" value="200"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%-5.5level] %logger - %message%newline"/>
</layout>
</appender>
그리고 다음과 같은 나는 또한 속성 값을 변경해야
log4net.GlobalContext.Properties["ApplicationName"] = Assembly.GetExecutingAssembly().GetName().Name;
private static log4net.ILog _logger = LogManager.GetLogger(typeof(Program));
log4net.Config.XmlConfigurator.Configure();
언제 아무튼있는 (나는 다음과 같은 오류가 구성 파일을 읽을 log4net 't은) 예외를 발생 :
log4net:ERROR Could not create Appender [CustomRollingFileAppender] of type [%property{ApplicationName}.UTIL.CustomRollingFileAppender]. Reported error follows.
System.TypeLoadException: Could not load type [%property{ApplicationName}.UTIL.CustomRollingFileAppender]. Tried assembly [log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a] and all loaded assemblies
at log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase)
at log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlEle
ment appenderElement)
type 속성이 매개 변수를 허용하지 않는다고 생각합니다. 그러나 나는 당신이 이것을 매개 변수화하기를 원하는 이유를 생각할 수 없다. 당신이 달성하고자하는 것을 명확히 할 수 있습니까? – Clafou
log4net이 포함 된 Console Application Template을 만들고 싶기 때문에이 매개 변수를 설정하고 싶습니다. –
log4net 매개 변수화 대신 Visual Studio 템플릿 시스템을 사용하여 관련 이름을 구성 파일에 저장할 수 있습니까? – Clafou