关于log4net的使用和无log输出的解决方法

1.新建一个log4net类库
2.在log4net官网或者Nuget获取log4net并引入新建的类库
3.编写log4net的帮助类

using System;

//此处是配置log4net配置文件所在位置,很关键,多数是因为此处没有配置对导致无log输出的
//ConfigFile 表示log4net配置文件所在的位置。
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.xml", ConfigFileExtension = "config", Watch = true)]
namespace Common
{
    /// 
    /// 日志帮助类
    /// 
    public class LogHelper
    {
          //GetLogger表示log4net配置文件中logger标签中name属性,此处要一致 不然无log输出
        private static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("loginfo");
        private static readonly log4net.ILog logError = log4net.LogManager.GetLogger("logerror");

        /// 
        /// 记录Info日志
        /// 
        /// 
        /// 
        public static void Info(string msg)
        {
            if (logInfo.IsInfoEnabled)
            {
                logInfo.Info(msg);
            }
        }
        /// 
        /// 记录Error日志
        /// 
        /// 
        /// 
        public static void Error(string info, Exception ex = null)
        {
            if (!string.IsNullOrEmpty(info) && ex == null)
            {
                logError.ErrorFormat("【附加信息】 : {0}
", new object[] { info }); } else if (!string.IsNullOrEmpty(info) && ex != null) { string errorMsg = BeautyErrorMsg(ex); logError.ErrorFormat("【附加信息】 : {0}
{1}", new object[] { info, errorMsg }); } else if (string.IsNullOrEmpty(info) && ex != null) { string errorMsg = BeautyErrorMsg(ex); logError.Error(errorMsg); } } /// /// 美化错误信息 /// /// 异常 /// 错误信息 private static string BeautyErrorMsg(Exception ex) { string errorMsg = string.Format("【异常类型】:{0}
【异常信息】:{1}
【堆栈调用】:{2}", new object[] { ex.GetType().Name, ex.Message, ex.StackTrace }); errorMsg = errorMsg.Replace("\r\n", "
"); errorMsg = errorMsg.Replace("位置", "位置"); return errorMsg; } } }

4.写log4net配置文件,并放在调用log4net帮助文件的项目处,如Web网站则放在web.config的同级目录,如windows窗体程序在最终要放在bin目录下或者exe同目录下



  
    

5.以上log4net代码可以拿过来无bug运行

无log输出的解决方案

1.在log帮助类输出log的代码前调用log4net.LogManager.GetRepository().Configured查看log4net的配置文件是否已经配置,如果为false,那么没有log的原因就是log4net配置文件没有配置对了,一般无log都是这个原因造成的,具体怎么配有这里提供1个个人比较
常用的方案
在log4net 帮助类中加入[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.xml", ConfigFileExtension = "config", Watch = true)],放在引用log4net类库的AssemblyInfo中也可以。ConfigFile指向log4net.xml配置文件的位置,如Web网站、webapi等则放在web.config的同级目录,如Windows窗体程序最终要放在bin目录下或者exe同目录下。同时确保在不管Web还是Win程序下有log4net.dll类库输出。

2.如果log4net配置文件加载没问题,依然没有log输出,那要检测下log4net配置文件中

logger标签
logger标签的name值和log4net.ILog logInfo = log4net.LogManager.GetLogger("loginfo");中GetLogger的值是否一致。
无标题.png

3.如果依然没log那么就要看看你调试程序的时候有没有报log4net的版本号是否兼容当下的.net版本号。个人亲测:log4net 2.0.8和.net framework4.6.1是兼容的

你可能感兴趣的:(关于log4net的使用和无log输出的解决方法)