2014-01-16 3 views
7

У меня возникла странная проблема. У меня есть несколько проектов в решении. Один из них - это WebAPI, и он отлично работает. Другой - это админ-сайт MVC, который не регистрируется. Вот что я пробовал.Отдельный файл конфигурации Log4Net не работает

Мой код регистрации:

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

В AssemblyInfo я попробовал каждый из следующих ...

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

В Application_Start Global.asax я пробовал следующее (удаление AssemblyInfo линии)

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

Это также не создает журнал. Единственный способ получить один из них - использовать код в global.asax и полный путь к logging.config.

Я смущен, так как webapi работает только с assemblyInfo только с относительным путем. Я также сделал образец фиктивного решения с проектом MVC с решением AssemblyInfo (относительный путь), и он тоже работал там.

Любые идеи?

ОБНОВЛЕНИЕ - НАЙДЕНО ВЫПУСКА

Я должен был настроить конфигурационный файл Бодрствующего в Application_Start:

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/

Thanks

+0

Есть ли проблемы с разрешением (запуск под IIS и попытки записи в файл могут возникнуть проблемы)? Вы пробовали [отладки] (http://stackoverflow.com/q/677640/724591)? Вы пробовали использовать полный путь в примере кода приложения_старта? У вашей конфигурации есть корневой элемент или совпадает с тем, что распечатывает 'DeclaryingType'? – matth

+0

Проблема с разрешением: я так не думаю, поскольку ее запуск в global.asax работает с полным путем. – BCarlson

+0

Отладка: в VS2012 он просто выполняется без ошибок при входе в систему. Log4Net отладки, я не смог заставить его ничего записывать.Смешно, что одна и та же конфигурация работает или не работает, основываясь на относительном/полном пути и глобальном vs assemblyInfo. – BCarlson

ответ

8

я должен был настроить конфигурационный файл Бодрствующего в Application_Start:

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)] плюс конфигурации предложенной @BCarlson

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

В сводках все, я создал образец C# консольный проект для конфигурации log4net с внешним log4net.config файл. https://github.com/riddhik84/Log4net-Tutorial

Смежные вопросы