2014-01-16 26 views
7

私は奇妙な問題を抱えています。ソリューションには複数のプロジェクトがあります。そのうちの1つはWebAPIであり、うまくログを記録します。もう1つはMVC管理サイトですが、これはログに記録されません。ここで私が試したことがあります。Log4Netの別の設定ファイルが動作しない

マイログコード:assemblyInfoで

var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
log.Info("Some log message"); 

私はassemblyInfoの除去(私は次のことを試してみた...のGlobal.asaxのApplication_Startで

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "logging.config", Watch = true)] 
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "C:\\full_path\\logging.config", Watch = true)] 

を次のそれぞれを試してみました行)

log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("Logging.config")); 
var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
log.Info("Application starting"); 

これもログを作成しません。私が作成できる1つの方法は、global.asaxのコードとlogging.configのフルパスを使用することでした。

webapiはassemblyInfoだけで相対パスで動作するので、混乱します。また、AssemblyInfoソリューション(相対パス)を使用してMVCプロジェクトのサンプルダミーソリューションを作成しました。

アイデア?

UPDATE - FOUND ISSUE

私はセットアップにのApplication_Startのconfigファイルウォッチャーを持っていた:

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config")); 

はDotNetOpenAuth.Core.dllはlog4netのを使用していることが判明し、AssemblyInfoソリューションをいない使用して行います作業。私はこのブログで詳細を見つけました:私はセットアップにのApplication_Startのconfigファイルウォッチャーを持っていたhttp://hanskindberg.wordpress.com/2013/04/07/log4net-configuration/

おかげ

+0

権限の問題はありますか(IIS上で実行していて、ファイルへの書き込みに問題がある可能性があります)?あなたは[デバッグ](http://stackoverflow.com/q/677640/724591)それを試しましたか?サンプルのapplication_startコードでフルパスを使用しようとしましたか?あなたの設定はルート要素を持っていますか、 'DeclaryingType'が出力するものと一致していますか? – matth

+0

権限の問題:global.asaxで実行するとフルパスで動作するので、私はそうは思わない。 – BCarlson

+0

デバッグ:VS2012では、ログするときにエラーなしで実行されます。 Log4Netのデバッグでは、何もログに記録できませんでした。同じ設定が動作するか混乱するのは、相対パス/完全パスとグローバルVS assemblyInfoに基づいて動作しないことです。 – BCarlson

答えて

8

log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config")); 

がDotNetOpenAuth.Core.dllはlog4netのを使用していることが判明して使用して行いますAssemblyInfoソリューションは機能しません。私はこのブログで詳細を見つけました:http://hanskindberg.wordpress.com/2013/04/07/log4net-configuration/(DotNetOpenAuth.Core.dllについての段落を見てください)

0

私はこの解決策を何度も苦労しました。解決策は、私の仕事の下に私は最終的に見つかった可能性>

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] プラス私は外部log4net.configでlog4netの設定のためのサンプルのC#コンソールプロジェクトを作成した要約をすべてに@BCarlson

によって
XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config")); 

を提案した構成、ファイル。 https://github.com/riddhik84/Log4net-Tutorial

関連する問題