Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# log4net BasicConfiguration未在控制台上打印_C#_Linux_Log4net_Monodevelop - Fatal编程技术网

C# log4net BasicConfiguration未在控制台上打印

C# log4net BasicConfiguration未在控制台上打印,c#,linux,log4net,monodevelop,C#,Linux,Log4net,Monodevelop,我决定使用log4net来处理我正在处理的应用程序的所有日志记录活动。。。在阅读了文档之后,我决定开始做实验,但第一次尝试就惨败了 该应用程序是在相当标准的Debian 7发行版中使用c#和MonoDevelop 3.0.3.2开发的,以便以后部署到Linux机器上 到目前为止,该代码非常简单,遵循log4net文档中的早期步骤,并在本文末尾引用 问题是记录器没有向控制台打印任何内容;在试图了解出了什么问题的同时,我用调试器查看了它;我看到log引用包含AppenderCollection,不幸

我决定使用log4net来处理我正在处理的应用程序的所有日志记录活动。。。在阅读了文档之后,我决定开始做实验,但第一次尝试就惨败了

该应用程序是在相当标准的Debian 7发行版中使用c#和MonoDevelop 3.0.3.2开发的,以便以后部署到Linux机器上

到目前为止,该代码非常简单,遵循log4net文档中的早期步骤,并在本文末尾引用

问题是记录器没有向控制台打印任何内容;在试图了解出了什么问题的同时,我用调试器查看了它;我看到log引用包含AppenderCollection,不幸的是它是空的。我想在配置期间有些东西工作不正常,我没有Appender,因此没有日志输出

我错过了什么?有什么建议吗?我不知道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,两个是滚动文件appender,一个是控制台appender。 然后我在每个记录器上记录“Hello World!”。 滚动文件记录器按预期工作,而ConsoleLogger的输出却找不到。我使用调试器进行了检查,阻塞器对象没有显示空的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!");
        }
    }
}


您使用哪种项目?控制台应用程序? 有几种情况下,您在控制台的std::out或std::err上看不到任何输出。 看看这篇文章:

你能在app.config或/和log4net config中显示你的log4net配置吗?@peer:所附的代码应该使用BasicConfiguration,根据文档,配置文件是不需要的。。。与此同时,我对一个配置文件进行了一些测试,发现我的ConsoleAppender有问题,而RollingFileAppender工作正常,让我用新代码和配置文件更新原始帖子。创建项目后,它在MonoDevelop中被创建为C#Console应用程序,附加的源文件是项目中唯一的源文件。自从创建项目以来,我没有对项目设置进行任何调整,而创建项目的唯一目的是使用log4net进行一些测试。所以我敢说它是一个控制台应用程序。
<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>