Используйте log4net в SDK - PullRequest
       8

Используйте log4net в SDK

3 голосов
/ 28 декабря 2010

Я предоставляю SDK, используя C #. Чтобы включить отладку полей, я хочу включить ведение журнала с использованием log4net. Как включить настройку без использования App.config, так как сборка будет DLL?

Спасибо

Ответы [ 4 ]

6 голосов
/ 28 декабря 2010

Рассмотрите возможность использования XmlConfigurator для настройки автономного расположения файла конфигурации для log4net.Вы можете использовать эту технику для предоставления независимой файловой конфигурации, не касаясь app \ web.config и не кодируя ее жестко.Пример:

http://haacked.com/archive/2005/03/07/ConfiguringLog4NetForWebApplications.aspx

Обновление

Попробуйте следующий загрузчик для настройки автономного файла конфигурации.Это построит полный путь.Попробуйте выйти из пути, если он по-прежнему испытывает проблемы с его поиском.

public static class LogFactory
{
    public const string ConfigFileName = "log4net.config";

    public static void Configure()
    {
        Type type = typeof(LogFactory);
        FileInfo assemblyDirectory = AssemblyInfo.GetCodeBaseDirectory(type);
        string path = Path.Combine(assemblyDirectory.FullName, ConfigFileName);
        FileInfo configFile = new FileInfo(path);
        XmlConfigurator.ConfigureAndWatch(configFile);
        log4net.ILog log = LogManager.GetLogger(type);
        log.ToString();
    }
}

Вызов:

LogFactory.Configure();
1 голос
/ 28 декабря 2010

вы можете поместить конфигурацию в код, хотя это и не рекомендуется.

лучше поставьте dll с внешним файлом или добавьте код - если файл существует, используйте его, если нет, используйте жесткийкодированная конфигурация.

0 голосов
/ 28 декабря 2010

Вы также можете рассмотреть возможность использования Common.Logging для .Net абстракции.

http://netcommon.sourceforge.net/

Common.Logging поддерживает log4net, NLog и Enterprise Library из коробки. Легко написать свой собственный адаптер для использования с Common.Logging, если вам нужно.

Таким образом, ваш SDK становится независимым от платформы ведения журналов. Вашему пользователю все еще потребуется запись в app.config или web.config, чтобы указать, какую платформу использовать, но конфигурация для конкретной платформы все еще может храниться в отдельном файле.

0 голосов
/ 28 декабря 2010

Почему бы не сделать вашу платформу журналов SDK независимой, предоставляя абстракцию вашего регистратора?Caliburn.Micro делает это, и в этой статье описывается, как это работает и как клиент может настроить соответствующий регистратор, который он хочет использовать - http://buksbaum.us/2010/08/08/how-to-do-logging-with-caliburn-micro/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...