Красота — наивысшая степень целесообразности. (c) И. Ефремов
Здравствуйте, 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);
}
Здравствуйте, 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());