Osobny plik konfiguracyjny Log4Net nie działa
Mam dziwny problem. Mam wiele projektów w rozwiązaniu. Jednym z nich jest WebAPI i dobrze się loguje. Innym jest strona administracyjna MVC, ta nie będzie się logować. Oto, co próbowałem.
Mój kod logowania:
var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.Info("Some log message");
W AssemblyInfo próbowałem każdego z następujących ...
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "logging.config", Watch = true)]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "C:\\full_path\\logging.config", Watch = true)]
W aplikacji startowej Global.asax wypróbowałem następujące elementy (usuwając linie assemblyInfo)
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("Logging.config"));
var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.Info("Application starting");
To również nie tworzy dziennika. Jedynym sposobem, w jaki mogłem uzyskać jeden, było użycie kodu z global.asax i pełnej ścieżki do logging.config.
Jestem zdezorientowany, ponieważ webapi działa tylko z AssemblyInfo tylko ścieżką względną. Zrobiłem też przykładowe rozwiązanie zastępcze z projektem MVC z rozwiązaniem AssemblyInfo (ścieżka względna) i tam też działało.
Jakieś pomysły?
UPDATE - FOUND ISSUE
Musiałem skonfigurować obserwatora plików konfiguracyjnych w Application_Start:
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config"));
Okazuje się, że DotNetOpenAuth.Core.dll używa log4net i sprawi, że korzystanie z rozwiązania AssemblyInfo nie będzie działać. Znalazłem szczegóły na tym blogu:http://hanskindberg.wordpress.com/2013/04/07/log4net-configuration/
Dzięki