【问题标题】:Not able to get log4net working to write to file无法让 log4net 工作以写入文件
【发布时间】:2014-02-04 23:32:33
【问题描述】:

我正在使用sharpdevelop 在C# 中创建一个控制台应用程序。我在 log4net 的参考中添加了,并且在编写代码时添加了日志记录语句,但我从未查看过日志文件。现在我完成了使日志文件正常工作所需的代码。我的程序运行良好,即使是日志语句,但我找不到日志文件。

我试图拼凑一些关于让 log4net 工作的例子。我有从配置中读取然后实例化对象的行,这些是我的程序中要运行的第一行:

log4net.Config.XmlConfigurator.Configure();
ILog datalogger = LogManager.GetLogger("myLog");  //initiate the data logger

然后在整个代码的各个地方我都有这个:

datalogger.Info(DateTime.Now.ToString() +  ":  using file: " + ProDirectory.ToString() + @"\" + myProFile.ToString());

我还在 app.config 文件中添加了以下内容:

<appender name="myLogAppender" type="log4net.Appender.RollingFileAppender" >
    <file value="myLog.log" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %level - %message%n" />
    </layout>
  </appender>

  <logger name="myLog">
    <level value="All"></level>
    <appender-ref ref="myLogAppender" />
  </logger>

无论我做什么,我都看不到正在生成的日志文件。我已经更改了目录,甚至暂停了程序以查看是否可以找到打开日志文件的句柄。每次上来都是空的。不知道我做错了什么。

【问题讨论】:

    标签: c# .net-3.5 sharpdevelop


    【解决方案1】:

    不确定这是否会有所帮助。我也很难让 log4net 在不同的场景中工作。

    我使用 log4net root xml 节点来指定 appender。希望它会有所帮助。

     <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="250KB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingFileAppender" />
    </root>
    

    更新

    您可能还想检查 Visual Studio 输出日志。首先将输出日志设置为记录“ALL”(在 VS 设置中的某处)。然后您应该在 Visual Studio 的输出窗口中看到 log4net 的确切错误消息。

    【讨论】:

      【解决方案2】:

      每当我在使用 log4net 创建日志文件时遇到问题时,通常都会是文件/目录权限问题。

      将您的 &lt;file value="log.txt" /&gt; 更改为您知道当前运行 devhost 的用户/进程可以访问的内容。

      例如:&lt;file value="%USERPROFILE%\Documents\log.txt" /&gt; 将在用户的“我的文档”文件夹中创建一个日志文件。这是用户有权写入数据的文件夹,不会给您带来任何麻烦。

      有关特殊文件夹值的详细信息,请参阅this link.

      【讨论】:

        【解决方案3】:

        看起来我只需要稍微清理一下我的 XML,在我完成之后日志文件工作正常:

        <?xml version="1.0" encoding="utf-8"?>
        <configuration>
          <configSections> <!-- Level 1 -->
            <section name="log4net" 
              type="log4net.Config.Log4NetConfigurationSectionHandler, 
                    log4net"/> <!-- Level 2 -->
          </configSections>     
            <startup>
                <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
            </startup>
        <log4net>
          <appender name="myLogAppender" type="log4net.Appender.RollingFileAppender" >
            <file value="myLog.log" />
            <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%date %level - %message%n" />
            </layout>
          </appender>
          <logger name="myLog">
            <level value="All"></level>
            <appender-ref ref="myLogAppender" />
          </logger>
        </log4net>  
        </configuration>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-25
          • 1970-01-01
          • 2012-03-17
          相关资源
          最近更新 更多