У меня есть библиотека фреймворков, которая делает много вещей, включая ведение журнала. Мы используем log4net для регистрации. Эта структура имеет статический класс ведения журнала LogManager, статический экземпляр ILog (logger) и статические методы для ведения журнала INFO, WARNING, DEBUG и т. Д.
Статический логгер экземпляра инициализируется так:
public static class LogManager
{
private static ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
static ActivityLogManager()
{
}
public static void LogDebugy(string message, params object[] messageParameters)
{
// Log the message here
}
}
У меня есть свои сомнения, если это правильный способ сделать это. Из здесь я вижу, что каждый класс, который должен регистрироваться, должен объявлять статический экземпляр ILog
.
Также я вижу, что мне нужно было бы указать конфигурационный файл Log4net в моем проекте фреймворка для ведения журнала. Думаю, я прочитал здесь , что конфиг будет получен из исполняемой сборки, но я не вижу, чтобы это произошло.
Есть ли какой-нибудь способ сделать запись в журнале из моего фреймворкового класса с настройкой, получаемой из моего веб-приложения (для моего веб-приложения) или какого-либо другого проекта бизнес-библиотеки (для моих библиотек бизнес-классов)?
Я также хотел бы добавить некоторую пользовательскую информацию в мой журнал (например, пользовательский идентификатор бизнес-объекта и т. Д., Пул приложений, ServerName, ClientHostName, ClientBrowser, ClientOS, Client User и т. Д.). Возможно ли это?
Я использую AdoNetAppender.
Edit1: я использую log4net.Config.XmlConfigurator(ConfigFile = @"log4net.config", Watch = true)
в моем файле Assembly.cs, чтобы указать на файл конфигурации log4net.
Edit2: My ILog Logger
находится в моей структуре LogManager Class, поэтому для моего приложения создается только один экземпляр.