如何为Log4net.config指定目录读取以及设定是否开启日志记录的开关

Step1、将Log4net.config放到指定的目录下
在这里插入图片描述
Step2、在App.config中添加日志记录开关IsWriteLog以及Log4net.config的相对路径

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="IsWriteLog" value="1" />
    <add key="log4net" value="配置\\log4net.config" />
  </appSettings>
  <!--<appSettings>
   
  </appSettings>-->
  <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
 
</configuration>

Step3、在程序的program类的Main方法中添加以下代码

static void Main()
        {

            //初始化日志文件 
            string state = System.Configuration.ConfigurationManager.AppSettings["IsWriteLog"];
            //判断是否开启日志记录
            if (state == "1")
            {
                var path = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + ConfigurationManager.AppSettings["log4net"];
                var fi = new System.IO.FileInfo(path);
                LogHelper.SetConfig(fi);
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

Step4、添加LogHelper类
class LogHelper
{

    public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
    public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
    private static object thisLock = new object();
    public static readonly log4net.ILog logwarn = log4net.LogManager.GetLogger("logwarn");


    public static void SetConfig(FileInfo configFile)
    {
        log4net.Config.XmlConfigurator.Configure(configFile);
    }
    public static void WriteLog_Warn(string info, bool realWriteLog = true)
    {
        lock (thisLock)
        {
            if (realWriteLog)
            {
                if (logwarn.IsInfoEnabled)
                {
                    logwarn.Warn (info);
                }
            }
        }
    }

    public static void WriteLog(string info, bool realWriteLog = true)
    {
        lock (thisLock)
        {
            if (realWriteLog)
            {
                if (loginfo.IsInfoEnabled)
                {
                    loginfo.Info(info);
                }
            }
        }
    }

    public static void WriteLog(string info, Exception se, bool realWriteLog = true)
    {
        lock (thisLock)
        {
            if (realWriteLog)
            {
                if (logerror.IsErrorEnabled)
                {
                    logerror.Error(info, se);
                }
            }
        }
    }
    /// <summary>
    /// 日志保留多少天
    /// </summary>
    /// <param name="logFilePath"></param>
    /// <param name="saveDays"></param>
    public static void SaveLogDays(string logFilePath, int saveDays)
    {
        lock (thisLock)
        {
            string[] logFileName = Directory.GetFiles(logFilePath);
            if (logFileName.Count() > saveDays)
            {
                File.Delete(logFileName[0]);
            }
        }
    }
}

Step5、log4net.config的内容如下





c






Step6、调用

 LogHelper.WriteLog("日志");
 LogHelper.WriteLog_Warn("日志警告");

在这里插入图片描述

在这里插入图片描述
需要引用System.Configuration

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c#上位机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值