2014-01-23 2 views
2

Сначала немного справочной информации о ситуации. У меня есть основное приложение (назовем его Core) и некоторые второстепенные приложения (назовем их основными заданиями). Основная задача Core - убедиться, что каждая заданная основная работа выполняется в соответствии с расписанием указанной работы. Все это разработано в .NET C#Трассировка на разные логфайлы из одного приложения

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

Мне кажется, что я мог бы использовать встроенные TraceSource и слушатели. Я сделал TextWriterTraceListener для каждой работы и начал отслеживать. Результат: каждое задание отслеживает информацию каждому слушателю.

Назад к чертежной доске. Я изучил его немного больше и теперь вижу, насколько глупым был мой первый подход. Теперь я создал источник для каждой работы и слушателя для каждого источника. В коде я указываю, какой источник мне нравится отслеживать. Но с небольшим успехом :(

Отрывок из app.config:

<system.diagnostics> 
    <switches> 
     <add name="AMSSUY" value="All"/> 
    </switches> 
    <sources> 
     <source name="AMSSUY_TraceSource"> 
     <listeners> 
      <add name="AMSSUY_Listener" type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="ksltest.log"/> 
     </listeners> 
     </source> 
    </sources> 
    </system.diagnostics> 

фрагмент из кода:

private static TraceSource log = new TraceSource("AMSSUY_TraceSource"); 
     log.TraceEvent(TraceEventType.Information, 1, "test test test"); 

Я попытался сделать общие слушателей, а также, и это не помогло Не удивительно, потому что, насколько я могу судить, цель общих слушателей состоит в том, чтобы другие источники могли делиться одним и тем же слушателем.

На некоторых форумах люди продолжают говорить о log4net - ca n, которые решают мою проблему? У меня нет абсолютно никакого опыта.

Что я хотел бы знать: есть ли элегантное решение моей проблемы? Можно ли решить мою проблему с помощью трассировщиков и слушателей?

+0

Я предполагаю, что переход на Log4Net не является вариантом? – Liath

+0

Если Log4Net может решить мою проблему, тогда это вариант. Но, как уже упоминалось, у меня нет предыдущего опыта. –

ответ

0

Вы когда-нибудь пробовали log4net? Он прост в использовании и стабильный: http://logging.apache.org/log4net/ Есть много примера того, как настроить журнал и позволяют несколько формат, см http://logging.apache.org/log4net/release/config-examples.html

+0

Вы думаете по тем же линиям, что и я, но я думаю, вам нужно дать пример конфигурации для решения вопроса OP - иначе он просто обменивается одной технологией на другую без исправления. – Liath

+0

Вы находитесь на Лиате. Только сейчас я оглядываюсь на дом Log4Net, но пока я не нашел ничего, чтобы заставить меня поверить, что обмен технологией устранит проблему :) –

+0

@ KasperLethan вы можете сделать это, создав два разных (возможно, файл) и регистрироваться в них в разных обстоятельствах (например, в разных пространствах имен/степенях) ... Я не могу сейчас погрузиться в файлы конфигурации, но я посмотрю, получится ли я позже – Liath

0

Вы можете использовать Nlog в качестве альтернативы Log4Net.

Вы можете сразу же реализовать его с минимальной конфигурацией и активно продолжать непрерывную разработку.

Смежные вопросы