Доброе утро, ребята.log4net: разные журналы в разных файловых приложениях во время выполнения
Я написал одно приложение istance C# 2.0 (назовите его myapp).
Myapp вызывается много раз, и при каждом вызове создается своего рода «задача», которая будет выполняться в отдельном потоке.
Если вы вызываете myapp несколько раз за короткое время, задача выполняется параллельно.
Обычно я использую log4net для ведения журнала; Я настраиваю его на загрузку xml-файла на XmlConfigurator.Configure(<config>.xml)
при запуске, тогда я использую статический LogManager.GetLogger(name)
в каждом классе, мне нужен регистратор, довольно простой.
Этот сценарий является сложным, вместо этого. Мне нужно сделать следующее: на основе одного из аргументов, полученных при каждом вызове (назовите его arg), мне нужно получить другой RollingFileAppender, который регистрируется в другом файле, например. г. .журнал.
Просто сделать пример:
первого вызова: myapp.exe -arg:01
- MyApp создает thread1
- установить новый RollingFileAppender в 01.log файл, если не существует
- объекты, используемые в этой теме необходимо войти в 01.log файле
второй вызов: myapp.exe -arg:02
- создать thread2
- установить новый RollingFileAppender в 02.log файл, если не существует
- объекты, используемые в этой теме необходимо войти 02.log файл, но не в log.01
третий вызов: myapp.exe -arg:01
- создать thread03
- получить RollingFileAppender в 01.log файл (он уже существует!)
- объекты, используемые в этой теме необходимо войти 01.log файл, но не в log.02
И так далее. Мне не нужно оставлять конфигурацию RollingAppender в XML-файле, я могу создать его программно; моя идея состоит в том, чтобы использовать статический класс-оболочку, называть его LogHelper, который создает приложения, если они не существуют на основе arg, и что отправка права ILOG при необходимости требует объектов (в классах я бы использовал что-то вроде ILog log = LogHelper.GetLogger(name, arg
), чтобы получить регистратор для использования вместо этого по умолчанию для метода log4net LogManager.GetLogger(name)
). Итак, если у меня есть 2 значения одного и того же класса в 2 разных потоках, когда я регистрирую сообщения, идет один на файл, в зависимости или arg (я буду вводить arg в каждый объект, если необходимо).
Я просматриваю много потоков здесь, в StackOverflow, но я не могу найти решение.
Может ли кто-нибудь указать мне в правильном направлении?
Заранее спасибо.
Hi Ferdinando Santacroce, First och all, great research, congrats .. Если вы используете код из консольного приложения, вывод журнала также отправляется на консоль, знаете ли вы это? – oakman
Спасибо, надеюсь, вы сочли это полезным. Да, я это знаю, спасибо :) –