#.net #vb.net #castle-windsor #castle
#.net #vb.net #castle-windsor #замок
Вопрос:
В настоящее время я использую часть log4net системы ведения журнала Castle Windsor, например:
objContainer.AddFacility("logging", New LoggingFacility(LoggerImplementation.Log4net)WithConfig("ConfigsLog4net.config"))
Мне нужно передать пару переменных в регистратор, потому что я использую динамические имена файлов журнала. Я просмотрел исходный код и определил, что одним из возможных вариантов действий является создание собственной фабрики и оборудования, но это большая работа, и я не уверен, что это лучшая практика.
Я отмечаю, что у Castle есть расширенная версия Log4net, но, похоже, документации по ней мало. Может ли кто-нибудь пролить свет на наилучший способ достижения этой цели?
Спасибо,
Росс.
Комментарии:
1. Можете ли вы объяснить, что вы подразумеваете под «динамическими именами файлов журнала»? Вы не можете настроить это в log4net.config? Как связано с лесозаготовительным комплексом? Лучше всего было бы привести пример или неудачный тест.
2. Приложение, которое я пишу, использует . NET WMI framework. Уровень представления предоставляет множество различных классов WMI (поставщиков). Windows создает объект для каждого из них в памяти (в том же потоке). Все они фактически являются корневым объектом — в результате все они наследуются от базового класса, который, в свою очередь, выполняет операцию Resolve(), чтобы найти службу, которая их реализует. Мне нужен файл журнала для каждого из них. Я не могу использовать фильтрацию, потому что в итоге я получу файл журнала для каждого из разрешенных ниже классов, и я не могу передать свойство log4net, потому что они используют один и тот же поток.
3. можете ли вы добавить это к вопросу, может быть, также включить пример или неудачный тест?
4. Я использую ExtendedLog4Net, но обновляю библиотеки и хочу использовать свободную регистрацию. Используйте log4net(). Я нахожусь в той же ситуации, что и вы, в том смысле, что если я использую свободную версию, я не знаю, чего мне будет не хватать. Я не вижу, что предлагает мне «расширенный», который я пропущу при реализации этого
Ответ №1:
В итоге я использовал метод CreateChildLogger() для создания необходимых регистраторов, поскольку у меня были временные ограничения на этот проект. Спасибо за все советы.