Вопрос по настройке log4net через app.config
От: stomsky Россия  
Дата: 25.06.10 11:59
Оценка:
Доброго времени суток всем!
Для логирования работы программы использую log4net. Настраиваю его через Application.config.
Программа состоит из двух сборок: основная (служба Windows или обычная WinForm EXE-программулина) и вторая — (статически подключенная к первой) DLL-сборка. Логирование надо вести именно из второй сборки (DLL).
Проблема в том, что LOG-файл формируется только если log4net настроен в App.Config первой сборки (EXE-шника).
Мне это не удобно, т.к. основная EXE-шная сборка, по сути, является обычным стартером, все полезные настройки хранятся в App.config подключаемой DLL-сборки.
Вопрос: можно ли как-то заставить log4net читать настройки из app.config того проекта, в котором создан логер (ILog)?
Красота — наивысшая степень целесообразности. (c) И. Ефремов
Re: Вопрос по настройке log4net через app.config
От: alexey.kostylev Новая Зеландия http://alexeykostylev.livejournal.com/
Дата: 25.06.10 12:08
Оценка: 2 (1)
Здравствуйте, stomsky, Вы писали:

S>Доброго времени суток всем!

S>Для логирования работы программы использую log4net. Настраиваю его через Application.config.
S>Программа состоит из двух сборок: основная (служба Windows или обычная WinForm EXE-программулина) и вторая — (статически подключенная к первой) DLL-сборка. Логирование надо вести именно из второй сборки (DLL).
S>Проблема в том, что LOG-файл формируется только если log4net настроен в App.Config первой сборки (EXE-шника).
S>Мне это не удобно, т.к. основная EXE-шная сборка, по сути, является обычным стартером, все полезные настройки хранятся в App.config подключаемой DLL-сборки.
S>Вопрос: можно ли как-то заставить log4net читать настройки из app.config того проекта, в котором создан логер (ILog)?

использовать log4net.Config.XmlConfigurator.Configure

наверно что-то типа того:

        public static void Configure(Uri uri)
        {
            log4net.Config.XmlConfigurator.Configure(uri);
        }

        /// <summary>
        /// Настраивает log4net.Config на app.config для переданной Assembly
        /// </summary>
        /// <param name="ass">Сборка, чей конфиг использовать</param>
        public static void Configure(Assembly ass)
        {
            var s = ass.EscapedCodeBase;
            var u = new Uri(ass.EscapedCodeBase);
            var app_cfg = ConfigurationManager.OpenExeConfiguration(u.LocalPath);
            FileInfo fi = new FileInfo(app_cfg.FilePath);
            log4net.Config.XmlConfigurator.Configure(fi);
        }
Re[2]: Вопрос по настройке log4net через app.config
От: alexey.kostylev Новая Зеландия http://alexeykostylev.livejournal.com/
Дата: 25.06.10 12:10
Оценка:
Здравствуйте, alexey.kostylev, Вы писали:

AK>Здравствуйте, stomsky, Вы писали:


S>>Доброго времени суток всем!

S>>Для логирования работы программы использую log4net. Настраиваю его через Application.config.
S>>Программа состоит из двух сборок: основная (служба Windows или обычная WinForm EXE-программулина) и вторая — (статически подключенная к первой) DLL-сборка. Логирование надо вести именно из второй сборки (DLL).
S>>Проблема в том, что LOG-файл формируется только если log4net настроен в App.Config первой сборки (EXE-шника).
S>>Мне это не удобно, т.к. основная EXE-шная сборка, по сути, является обычным стартером, все полезные настройки хранятся в App.config подключаемой DLL-сборки.
S>>Вопрос: можно ли как-то заставить log4net читать настройки из app.config того проекта, в котором создан логер (ILog)?

AK>использовать log4net.Config.XmlConfigurator.Configure


AK>наверно что-то типа того:


AK>
AK>        public static void Configure(Uri uri)
AK>        {
AK>            log4net.Config.XmlConfigurator.Configure(uri);
AK>        }

AK>        /// <summary>
AK>        /// Настраивает log4net.Config на app.config для переданной Assembly
AK>        /// </summary>
AK>        /// <param name="ass">Сборка, чей конфиг использовать</param>
AK>        public static void Configure(Assembly ass)
AK>        {
AK>            var s = ass.EscapedCodeBase;
AK>            var u = new Uri(ass.EscapedCodeBase);
AK>            var app_cfg = ConfigurationManager.OpenExeConfiguration(u.LocalPath);
AK>            FileInfo fi = new FileInfo(app_cfg.FilePath);
AK>            log4net.Config.XmlConfigurator.Configure(fi);
AK>        }
AK>


в своем проекте конфигурирую под свои настройки:

Logger.Configure(Assembly.GetExecutingAssembly());
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.