【问题标题】:Very simple file appender logging not working非常简单的文件附加程序日志记录不起作用
【发布时间】:2010-05-17 15:27:38
【问题描述】:

这是我的 web.config 信息:

  <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <log4net>
        <root>
                <level value="ALL" />
        </root>
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
              <file value="c:\temp\log-file.txt" />
              <appendToFile value="true" />
              <rollingStyle value="Size" />
              <maxSizeRollBackups value="10" />
              <maximumFileSize value="1MB" />
              <staticLogFileName value="true" />
              <layout type="log4net.Layout.SimpleLayout" />
        </appender>
      </log4net>
...

这是初始化记录器的代码:

protected void SendMessage()
    {
        log4net.Config.XmlConfigurator.Configure(); 
        ILog log = LogManager.GetLogger(typeof(Contact));
        ...
        log.Info("here we go!");
        log.Debug("debug afasf");
        ...
     }

不管我做什么,它都不起作用。我正确引用了“log4net.dll”,通过调试应用程序,我可以看到日志对象正在正确启动。这是一个 asp.net 3.5 框架 web 项目。有什么想法/建议吗?

我最初认为这个错误可能是由于文件写入权限限制,但似乎并非如此(或者我认为)。

【问题讨论】:

  • 顺便说一句,“联系人”是这个 sendmessage() 函数所在的类的名称。

标签: c# asp.net logging log4net log4net-configuration


【解决方案1】:

我找到了答案:我需要在 web.config 的配置部分中添加 requirePermission="false" 标记。

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" **requirePermission="false"**/>
</configSections>

【讨论】:

    【解决方案2】:

    据我所知,您缺少根的附加程序:

    <root>
      <level value="ALL" />
      <appender-ref ref="RollingFileAppender" />
    </root>
    

    【讨论】:

    • 那没有做到。一件有趣的事情是,在运行网站时,它会创建 .txt 文件,但不会在其中记录任何内容。当我尝试删除文件时(当 Web 服务器进程仍在运行时)它说 Web 服务器当前正在使用它……即使我离开了使用日志记录功能的页面(只有一页使用日志记录) .
    • @contactmatt:对不起,我帮不了你更多。我将您的配置复制到我的一个程序中(并添加了 appende-ref),它按预期工作。确保您拥有最新的 log4net 版本并且配置文件是最新的(开始重建,查看文件)。
    【解决方案3】:

    我必须调用 fileAppender.ActivateOptions() 来记录它

    【讨论】:

      【解决方案4】:

      是否可以在网络服务器上运行Debug View

      如果是这样,你也许可以看到 log4net 是否报告了任何错误(例如访问错误或读取配置文件错误)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-29
        • 2021-11-19
        相关资源
        最近更新 更多