WCFサービスで、ロギングにlog4netを使いたいのだけれど、設定ファイルの読み込みをどうしようか迷ってます。
これまでずっとやってきたのは、下記のようなコードで設定ファイルのパスとファイル名を指定するという方法でした。
static protected ILog logger = LogManager.GetLogger("CPLogger"); public TestClass() { log4net.Config.XmlConfigurator .Configure(new System.IO.FileInfo( AppDomain.CurrentDomain.BaseDirectory + "log4net.config")); }
ですが、これをweb.configなど、共通的に用いられる設定ファイルに埋設できないかと。
答えは公式サイトの設定資料に記載がありました。
- Apache log4net™ Manual - Configuration
- http://logging.apache.org/log4net/release/manual/configuration.html
中盤あたりの「.config Files」のところに、App.configやweb.configといったシステム設定ファイルに設定情報を追記する方法について記載されています。簡単にまとめると…
- configSectionsタグのところに、log4netセクションを型「log4net.Config.Log4NetConfigurationSectionHandler」として宣言する。
- configurationタグの中に、「log4net」タグで囲まれた設定情報を追記する(記載内容は、単独設定ファイルで書いているモノのそのままコピーでOK)。
ということのようです。1つめの宣言は、こんな感じで。web.configの冒頭にある「configSection」の頭に、log4netの記述を追記しています。
<configSections> <section name="log4net" type=" log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> </sectionGroup> </sectionGroup> </sectionGroup> </configSections>
これと。そのあとにlog4net設定を追記すればOK。新しい設定ファイルを追加する必要も、設定ファイルを直接指定する必要も無く、設定処理はプログラム冒頭で下記のように引数無しのConfigureメソッドを呼べばOKです。
static protected ILog logger = LogManager.GetLogger("CPLogger"); public TestClass() { log4net.Config.XmlConfigurator.Configure(); }
- 作者: 鄭立,小森谷良明,加藤誠司,飯田洋介
- 出版社/メーカー: 秀和システム
- 発売日: 2008/07
- メディア: 単行本
- 購入: 2人 クリック: 63回
- この商品を含むブログ (7件) を見る