c# log4net报错配置问题

可紊 提交于 2020-01-03 03:50:13

log4net:ERROR Failed to find configuration section 'log4net' in the application's .config file. Check your .config file for the <log4net> and <configSections> elements. The configuration section should look like: <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
 

 因为我在我的程序

项目>Properties>AssemblyInfo.cs

AssemblyInfo.cs 文件里添加了

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

并且还在我的LogHelper.cs文件里添加了

log4net.Config.XmlConfigurator.Configure();//加载配置文件

感觉上好像是某种东西冲突了,造成的问题


修改后的完整文件:

AssemblyInfo.cs  这个文件没懂

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("Crawler")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("Crawler")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]

// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("adf24768-a0ea-45bf-a10f-f8d2d3be9a4e")]

// 程序集的版本信息由下列四个值组成: 
//
//      主版本
//      次版本
//      生成号
//      修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

LogHelper.cs文件 屏蔽了一行代码

using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Crawler.log
{
    public static class LogHelper
    {
        private static ILog log;
        static LogHelper()
        {
            //log4net.Config.XmlConfigurator.Configure();//加载配置文件
            log = log4net.LogManager.GetLogger(typeof(LogHelper));//通过反射获取日志对象实例
        }
        /// <summary>
        /// BUG记录
        /// </summary>
        /// <param name="info"></param>
        public static void DeBug(string info)
        {
            log.Debug(info);
        }
        /// <summary>
        /// 记录信息
        /// </summary>
        /// <param name="info"></param>
        public static void Info(string info)
        {
            log.Info(info);
        }

        /// <summary>
        /// 记录错误
        /// </summary>
        /// <param name="info"></param>
        public static void Error(string info)
        {
            log.Error(info);
        }

        public static void Error(string info, Exception ex)
        {
            log.Error(info, ex);
        }

        /// <summary>
        /// 记录警告
        /// </summary>
        /// <param name="info"></param>
        public static void Warn(string info)
        {
            log.Warn(info);
        }
    }
}

 


解释:

你在某处调用XmlConfigurator.Configure()

删除这些调用,只添加[assembly:log4net.Config.XmlConfigurator(Watch = true)]属性.

通常在单独的文件中配置log4net是比较容易的.创建一个文件log4net.config并将您的属性更改为:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config",Watch = true)]

删除您的web.config中的部分.

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!