nLog смешивание информационных операторов в нескольких файлах журнала в сервисе windows - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть windows -сервисный проект в C#. NET с последней версией. NET framework, и я пытаюсь внедрить nLog 4.5.11 в проект. Сервис Windows имеет класс таймера, и его события запускаются каждые 10 секунд. Я пытаюсь написать в nLog из этих обработчиков, но он не печатает в файле журнала.

Операторы info из обработчика событий onstart windows прекрасно записываются в журнал.

После устранения неполадок в internalLogFile.log, теперь я нашел эти строки в nLog Info, но в другом файле журнала, созданном какой-то другой сборкой, такой как RabbitMQ.log. Я даже не упомянул об этом в nLog.config. Я не уверен, почему nLog делает это смешивание контента в нескольких файлах.

nlog-сборок, добавленных в проект windows -service: -

nlog assemblies added to the windows-service project

nLog Содержимое файла .config: -

    <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogFile="C:\Px\log.txt" internalLogLevel="Info">
  <targets>
    <target name="logconsole" xsi:type="Console" />
    <target name="logfile"
            xsi:type="File"
            fileName="${basedir}/Px_LoaderService-${shortdate}.log" />
  </targets>

  <rules>
    <logger name="docLogger" minlevel="Info" writeTo="logfile" />
    <logger name="*" minlevel="Info" writeTo="logconsole" />
  </rules>
</nlog>

InternalLogfile также не содержит ошибок или информации об отсутствующих записях.

Вот пример кода обработчика события Timer : -

   private static NLog.Logger log = LogManager.GetLogger("docLogger");

   private void BulkInserts(object sender, ElapsedEventArgs e)
        {
            lock (_locker)
            {
                try
                {

                    log.Info(string.Format("BulkInsert called."));
                }
             }

Пожалуйста, подскажите, где я делаю ошибку, и происходит это сочетание записи журнала.

1 Ответ

1 голос
/ 28 февраля 2020

Я нашел проблему в моем windows -сервисном проекте. Другой файл nlog генерировался из другой ссылки на сборку в проекте. Вот почему некоторые операторы журнала были записаны в другой файл журнала. Поскольку log является объектом stati c и создается на уровне класса, а второй объект журнала создается в сборке с другой областью действия класса. Но объект журнала имеет тип stati c, и именно это вызвало проблему. Я бы сказал, что это загрязнение объекта из двух разных классов.

Теперь я определил проблему, и она решена

...