- - PR -
ASP.NET で log4net のカスタムクラスを使いたいのですが…
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2009-01-27 12:55
ASP.NET2.0 で log4net を使おうとしています。
・WindowsXP SP2 ・VisualStudio2008 SE SP1 (使用言語:VB) ・log4net 1.2.10.0 ログローテーションが独自の間隔になるので、log4net.Appender.FileAppender を 継承したカスタムクラスを作成しました。 ソースとコンフィグファイルは以下の通りで、 いずれも同プロジェクト配下に置いています。 ※コンフィグはweb.config内ではなく単独ファイルにしています。 --------CustomRollingFileAppender.vb Imports System Imports System.Collections Imports System.Globalization Imports System.IO Imports log4net.Util Imports log4net.Core Namespace myAppender Public Class CustomRollingFileAppender Inherits log4net.Appender.FileAppender : End Class End Namespace --------log4net.config <?xml version="1.0" encoding="Shift_JIS"?> <!-- [log4net.config] --> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <appSettings> <add key="log4net.Internal.Debug" value="true"/> </appSettings> <log4net> <appender name="CustomAppender" type="myAppender.CustomRollingFileAppender"> : </appender> <logger name="CustomLogger"> <level value="ALL"/> <appender-ref ref="CustomAppender" /> </logger> </log4net> </configuration> ------------ Global.asax.vb#Application_Start でロードすると、 ----- log4net:ERROR XmlHierarchyConfigurator: Could not create Appender [CustomAppender] of type [myAppender.CustomRollingFileAppender]. Reported error follows. System.TypeLoadException: Could not load type [myAppender.CustomRollingFileAppender]. Tried assembly [log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821] and all loaded assemblies 場所 log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase) 場所 log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase) 場所 log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement) log4net:ERROR XmlHierarchyConfigurator: Appender named [CustomAppender] not found. ----- とのエラーになってしまいます。 VisualStudio2008 EE SP1 で作成したものは上記で問題なく動作し、 ログも出力されていることを確認しています。 ネットで調べて、アセンブリが違うためとのことなので log4net.config 内を <appender name="CustomAppender" type="myAppender.CustomRollingFileAppender, myAppender"> と記述を変えてみたのですが、結果かわらずでした。 「アセンブリ」をあまり理解できてなく、根本的に間違ってるのかもしれませんが、 どうすれば認識してくれるようになるのでしょうか。 log4.net のプロジェクト一式もダウンロードしましたが、 できればこちらのリビルドはしたくなく、自作プロジェクトで解決したいです。 すみませんが、ご教授願えませんでしょうか。 |
|
投稿日時: 2009-01-27 13:13
補足…でもないのですが。。。
上記のエラーは、 log4net.Config.XmlConfigurator.Configure(New System.IO.FileInfo(絶対パス)) で発生するのですが、 Try〜Catch では例外をキャッチできませんでしたので、 イミディエイトウィンドウで実行してみて出たものです。 |
|
投稿日時: 2009-01-27 20:53
解決しました!!
> ネットで調べて、アセンブリが違うためとのことなので > log4net.config 内を > > <appender name="CustomAppender" type="myAppender.CustomRollingFileAppender, myAppender"> > > と記述を変えてみたのですが、結果かわらずでした。 この部分ですが、type属性には ・1つ目の要素 … アセンブリ名からのアペンダクラス名 ・2つ目の要素 … アセンブリ名 を記述することで動きました。 例) アセンブリ名:MyAssembly namespace名:myAppender である場合、 <appender name="CustomAppender" type="MyAssembly.myAppender.CustomRollingFileAppender, MyAssembly"> の記述になります。 ※カスタムクラスには、namespaceは必須のようです。 ※クラスライブラリで作成した場合も同様の設定でいけました。 |
1