c# - 配置节 'log4net' 缺少节声明

标签 c# asp.net-mvc log4net

我正在努力将 log4net 添加到我的 MVC5 项目中。我做了以下事情;

Install-Package log4net

已成功安装(我假设)log4net

我在配置部分的 web.config 中添加了以下内容;

<log4net debug="true">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="Logs\ApiLog.txt" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="10MB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
           <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
        </layout>
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingLogFileAppender" />
    </root>
</log4net>

并且我在 web.config 的 configSections 中添加了以下内容;

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

我已将以下内容添加到我的 Global.asax.cs;

log4net.Config.XmlConfigurator.Configure();

解决方案可以编译,但是当我尝试运行我的程序时出现错误;

HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration data for the page is invalid.

The configuration section 'log4net' cannot be read because it is missing a section declaration

有人知道我做错了什么吗?

最佳答案

您还需要在 web.config 中包含它

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

它应该如下所示,还要确保您的应用程序 bin 文件夹中有 log4net.dll、log4net.xml

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <appSettings>    
  </appSettings>
  <log4net xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logfile.log" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <datePattern value=".yyyyMMdd.lo\g" />
      <maximumFileSize value="5MB" />
      <maxSizeRollBackups value="-1" />
      <countDirection value="1" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date %-5level [%thread] [%aspnet-session{SessionId}] %logger - %message%newline%exception" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>

关于c# - 配置节 'log4net' 缺少节声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015011/

相关文章:

c# - MongoDB 哈希表平均值

c# - 何时使用 List<T>、IEnumerable<T> 和 ArrayList

c# - 禁用失败的 Hangfire BackgroundJob 的重新排队

asp.net-mvc - 带有 Enum Kendo UI 的 DropDownList

c# - 如何让 Log4Net 发送发件人值设置为当前用户电子邮件地址的电子邮件

c# - 将 List 拆分为 N 大小的较小列表

c# - 为什么 jquery 在布局中定义的页面上不起作用

c# - 以编程方式更改 log4net 日志记录级别

c# - 如何在 log4net 中以编程方式更改日志文件路径?

c# - 使用 MVC Razor View 在表中插入多行