Vb.net Visual Studio 2008 log4net несколько модулей, один и тот же app.config различных регистраторов, не работают - PullRequest
0 голосов
/ 21 августа 2009

У меня есть 2 проекта консольных приложений в одном каталоге, но в разных проектах. В каталоге App_Code есть общий код и общий файл app.config, который встроен в отдельные файлы .exe.config.

Один модуль (VScanDemonStarter) запускается и записывает данные в один регистратор, а его собственный аппендер переходит в отдельный файл. Он использует process.start () для выполнения другого модуля (VScanDemon) в скрытом окне другой командной строки.

Когда я запускаю VScanDemon, он помещает записи в свой лог-файл. Когда я запускаю VScanDemonStarter, он помещает записи в свой (другой) файл журнала, создается файл журнала VScanDemon, но нет записей. Я вижу, что это выполняется, потому что некоторые файлы перемещаются из одного каталога в другой. Просто нет записей в журнале.

конфиг выглядит как

<root>
  <level value="INFO" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
  <param name="File" value="log/vscandemonstarter.log" />
  <param name="AppendToFile" value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd hh:mm:ss} - %m%n" />
  </layout>
</appender>
<appender name="vsdemonlogfileappender" type="log4net.Appender.RollingFileAppender" >
  <param name="File" value="log/vscandemon.log" />
  <param name="AppendToFile" value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%-5p %d{yyyy-MM-dd hh:mm:ss} - %m%n" />
  </layout>
</appender>

и кодовые тела настроены и назовите тела с помощью.

VScanDemonStarter:

верхняя часть модуля:

Private ReadOnly log As ILog = log4net.LogManager.GetLogger("default")

верхняя часть основного:

    log4net.Config.XmlConfigurator.Configure()

пример звонков:

    If log.IsInfoEnabled Then log.Info("VScanDemonStarter:Main: ----called----")

VBScanDemon:

верхняя часть модуля:

Private ReadOnly log As ILog = log4net.LogManager.GetLogger("VSDemonLogger")

верхняя часть основного:

    log4net.Config.XmlConfigurator.Configure()

VBScanDemon:

    If log.IsInfoEnabled Then log.Info("VScanDemon:Main: ----called----")

Я не получаю никаких записей журнала от VScanDemon.


Извините, опущен верх конфигурации

 <log4net debug="true">  
    <logger name="default">  
      <level value="INFO"/>  
      <appender-ref ref="LogFileAppender" />  
    </logger>  
    <logger name="VSDemonLogger">  
      <level value="INFO"/>  
      <appender-ref ref="vsdemonlogfileappender" />  
    </logger>

У меня есть один app.config, но в нем используется два проекта в одном каталоге. Они генерируют отдельные конфиги из этого единственного источника .exe.config

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

1 Ответ

0 голосов
/ 21 августа 2009

Используете ли вы одинаковую конфигурацию log4net для обоих модулей? Если нет, действительно ли они отличаются во время выполнения?

Я думаю, что "default" должно вернуть Root-logger и "VSDemonLogger" другой, но этот не включен в вашу опубликованную конфигурацию.

EDIT: AFAIK все логгеры в конфигурации будут «созданы», что приведет к созданию сгенерированных лог-файлов для ваших VSDemonLogger и VScanDemonStarter, даже если вы их не используете.

Вы используете релятивные пути в конфигурации, они все еще действительны для VSDemonLogger, если вы вызываете его из VScanDemonStarter?

...