私はコンソールアプリケーション内で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のとき、私は次のようなエラー(doesnのを取得します「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を埋め込んだコンソールアプリケーションテンプレートを作成したいので、これをパラメータ化したいと思います。 –
log4netのパラメータ化の代わりに、Visual Studioテンプレートシステムを使用して関連ファイル名を設定ファイルに入れることができますか? – Clafou