' log4net.Config.XmlConfigurator'不是属性类

时间:2014-06-30 11:01:59

标签: c# visual-studio-2010 visual-studio c#-4.0 logging

我想为我的移动应用程序创建一个日志文本文件。我正在使用compact framework 3.5,我选择了log4net进行日志记录。我按照下面的博客创建了Config.xml文件和日志文件http://breathingtech.com/2009/using-apache-log4net-in-net-compact-framework-projects/它运行时没有任何错误但没有创建任何日志文件。请参阅我的Config.xml文件,

<?xml version="1.0" encoding="utf-8" ?>
    <!-- .NET application configuration file -->
    <configuration>
        <!-- This section contains the log4net configuration settings -->
        <log4net>
            <!-- Define some output appenders -->
            <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
                <file value="log-file.txt" />
                <appendToFile value="true" />
                <layout type="log4net.Layout.PatternLayout">
                     <conversionPattern value="%date [%-5level] - %message%newline" />
                </layout>
            </appender>
        <appender name="DebugAppender" type="log4net.Appender.DebugAppender">
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%-5level] - %message%newline" />
          </layout>
        </appender>
        <!-- Setup the root category, add the appenders
               and set the default level -->
            <root>
                <level value="ALL" />
          <appender-ref ref="DebugAppender" />
          <appender-ref ref="LogFileAppender" />
            </root>  
        </log4net>
    </configuration>

我在program.cs文件下添加了以下行

private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(Program));

string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName) + "\\Config.xml";
            if (System.IO.File.Exists(path))
            {
                log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(path));
            }
Log.Info("Application startup");

我的Config.xml是否正确,我只是复制了上述博客中的内容,并且我在program.cs中获得了Config.xml路径。

由于上面的设置没有创建log-file.txt而没有记录log.Info消息,我用Google搜索并在using log4net.Config;

之后添加了以下行
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "../Config.xml", Watch = true)]

这给了我一个错误&#34; 'log4net.Config.XmlConfigurator' is not an attribute class&#34;。任何人都可以帮我在紧凑的框架中创建一个日志文件。

由于

2 个答案:

答案 0 :(得分:1)

尝试使用以下log4net配置。我使用它并生成日志文件。

    <log4net>
        <!-- Define some output appenders -->
        <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
            <param name="File" value="log.txt"/>
            <param name="AppendToFile" value="true"/>
            <param name="RollingStyle" value="Date"/>
            <param name="DatePattern" value="yyyy.MM.dd"/>
            <param name="StaticLogFileName" value="true"/>
            <layout type="log4net.Layout.PatternLayout,log4net">
                <param name="ConversionPattern" value="%d %-5p - %m%n"/>
            </layout>
        </appender>
        <!-- Setup the root category, add the appenders and set the default priority -->
        <root>
            <priority value="ALL"/>
            <appender-ref ref="rollingFile"/>
        </root>
    </log4net>

答案 1 :(得分:1)

在您的log4net配置文件中,您无需添加<configuration>根标记。 <log4net>应该是根。如果要将配置放在应用程序配置文件或Web配置文件中,<configuration>是根标记。

    <?xml version="1.0" encoding="utf-8" ?>
    <log4net>
        <!-- Define some output appenders -->
        <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
            <file value="log-file.txt" />
            <appendToFile value="true" />
            <layout type="log4net.Layout.PatternLayout">
                 <conversionPattern value="%date [%-5level] - %message%newline" />
            </layout>
        </appender>
    <appender name="DebugAppender" type="log4net.Appender.DebugAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%-5level] - %message%newline" />
      </layout>
    </appender>
    <!-- Setup the root category, add the appenders
           and set the default level -->
        <root>
            <level value="ALL" />
      <appender-ref ref="DebugAppender" />
      <appender-ref ref="LogFileAppender" />
        </root>  
    </log4net>