log4net BasicConfigurator не печатает на консоли

1

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

Приложение разрабатывается с использованием С# с использованием MonoDevelop 3.0.3.2 в довольно стандартном дистрибутиве Debian 7, чтобы позднее быть развернутым на машинах Linux.

Код до сих пор тривиален и следует самым ранним шагам в документации log4net и цитируется в конце сообщения.

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

Что мне не хватает? любое предложение? Есть ли какая-то известная проблема для комбинации MonoDevelop-Linux-log4net, о которой я не знаю?

using System;
using log4net;
using log4net.Config;

namespace TestLog4Net
{
    class MainClass
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(MainClass));

        public static void Main (string[] args)
        {
            BasicConfigurator.Configure();

            Console.WriteLine ("Hello World!");
            log.Info("Hello World!");
        }
    }
}

ОБНОВИТЬ

Я провел несколько тестов, загрузив файл конфигурации. Я создал 3 регистратора каждый со своим собственным приложением, два - скопированные файловые приложения, а один - консольный appender. Затем я записываю "Hello World!". на каждом регистраторе. Скользящие файловые регистраторы работают так, как ожидалось, а вывод из ConsoleLogger нигде не найден. Я проверил с помощью Debugger, и объект clogger НЕ отображает пустой AppenderCollection, но в любом случае выхода нет. Ниже вы можете найти обновленный код вместе с конфигурационным файлом.

using System;
using log4net;
using log4net.Config;

namespace TestLog4Net
{
    class MainClass
    {

        public static void Main (string[] args)
        {
            XmlConfigurator.Configure(new System.IO.FileInfo("app.config"));

            ILog rflogger1 = LogManager.GetLogger("RFLoggerOne");
            ILog rflogger2 = LogManager.GetLogger("RFLoggerTwo");
            ILog clogger = LogManager.GetLogger("CLogger");

            rflogger1.Info("Hello World!");
            rflogger2.Info("Hello World!");
            clogger.Info("Hello World!");

            Console.WriteLine ("Hello World!");
        }
    }
}

<log4net>
<appender name="CAppender" type="log4net.Appender.AnsiColorTerminalAppender">
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

<appender name="RFAppender1" type="log4net.Appender.RollingFileAppender">
    <file value="rf1.log"/>
    <appendToFile value="true"/>
    <rollingStyle value="Composite"/>
    <datePattern value="yyyyMMdd"/>
    <maxSizeRollBackups value="10"/>
    <maximumFileSize value="1000000"/>
    <staticLogFileName value="true"/>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline"/>
    </layout>
</appender>

<appender name="RFAppender2" type="log4net.Appender.RollingFileAppender">
    <file value="rf2.log" />
    <appendToFile value="true" />
    <maximumFileSize value="100KB" />
    <maxSizeRollBackups value="2" />

    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level %thread %logger - %message%newline" />
    </layout>
</appender>


<logger name="CLogger">
    <level value="ALL"/>
    <appender-ref ref="CAppender"/>
</logger>

<logger name="RFLoggerOne">
    <level value="ALL"/>
    <appender-ref ref="RFAppender1"/>
</logger>

<logger name="RFLoggerTwo">
    <level value="ALL"/>
    <appender-ref ref="RFAppender2"/>
</logger>


<root>
    <level value="ALL"/>
</root>
</log4net>
  • 0
    Можете ли вы показать свою конфигурацию log4net в вашем app.config или / и в конфигурации log4net?
  • 0
    @peer: в прикрепленном коде предполагается использовать BasicConfigurator, и, согласно документации, файл конфигурации не нужен ... Тем временем я провел несколько тестов с файлом конфигурации и обнаружил, что у меня проблемы с ConsoleAppender, пока RollingFileAppender работает нормально, позвольте мне обновить исходное сообщение новым кодом и файлом конфигурации.
Теги:
log4net
monodevelop

1 ответ

0

Какой проект вы используете? Консольное приложение? Есть несколько случаев, когда вы не увидите вывод на std :: out или std :: err на консоли. Взгляните на этот пост: Может ли один исполняемый файл быть консольным и графическим приложением?

  • 0
    Когда проект был создан, он был создан как консольное приложение C # в MonoDevelop, и прикрепленный источник является единственным исходным файлом, являющимся частью проекта. Я ничего не настраивал в настройках проекта с момента его создания, и проект создавался с единственной целью - провести несколько тестов с log4net. Поэтому я бы осмелился сказать, что это консольное приложение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню