无法使log4net正常工作以写入文件

时间:2014-02-03 22:28:00

标签: c# .net-3.5 sharpdevelop

我正在使用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>

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

3 个答案:

答案 0 :(得分:0)

不确定这是否有帮助。我也很难让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的确切错误消息。

答案 1 :(得分:0)

每当我遇到log4net创建日志文件的问题时,它通常都会成为文件/目录权限问题。

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

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

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

答案 2 :(得分:0)

在我完成日志文件工作正常后,看起来我只需要清理一下我的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>