天天看點

c# log4net報錯配置問題

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中的部分.

繼續閱讀