SuperSocket教程 C# log4Net日志的安装,配置,和使用,详细

我喜欢写详细的博客 做一个对新手友好的博主 哈哈哈
大家在没有工作的时候
一般都是使用控制台去进行一些打印操作
可以实时的去看到 并进行问题的解决
而到了 工作中 当我们的程序发布后
你还能让别人去装一个Vistual Studio 或者其他IDE吗
显然 这不现实
程序发布后 你不能实时的进行调试
那么 某一天客户突然有个异常出来了 你该怎么去进行跟踪操作呢
你怎么知道是哪段程序出了问题
所以这个时候 我们需要在程序trycatch的catch代码段里面
进行一些记录操作
那么怎么记录呢 如果你比较厉害 代码能力比较强
你可以自己写一个记录工具 可以用任何文本文档的形式
每次碰到异常就记录一下时间 后面就可以查阅
但是你写的一定没有log4Net写的好
为什么呢 别人一个团队研究出来的东西 肯定是比你自己缝缝补补的程序要健壮 要细致

好的 废话不多说 知道了为什么要用日志记录
那么我们开始看如何使用它

Nuget 安装一下

在这里插入图片描述

建一个log4net.config 的xml配置文件
我是在根目录建立的

在这里插入图片描述

在里面输入以下内容

<?xml version="1.0" encoding="utf-8"?>
<log4net>
  <!-- 将日志以回滚文件的形式写到文件中 -->
  <!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
  <!--Error-->
  <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
    <file value="Log/" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
    <datePattern value="&quot;GlobalExceptionLogs_&quot;yyyyMMdd&quot;.log&quot;" />
    <!--日志文件名是否为静态-->
    <StaticLogFileName value="false" />
    <!--多线程时采用最小锁定-->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <!--布局(向用户显示最后经过格式化的输出信息)-->
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date| %-5level %newline%message%newline--------------------------------%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="ERROR" />
      <levelMax value="FATAL" />
    </filter>
  </appender>
  <!--Error-->

  <!--Info-->
  <appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
    <!--定义文件存放位置-->
    <file value="Log/" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <!--日志文件名是否为静态-->
    <StaticLogFileName value="false" />
    <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
    <datePattern value="&quot;GlobalInfoLogs_&quot;yyyyMMdd&quot;.log&quot;" />
    <!--多线程时采用最小锁定-->
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <!--布局(向用户显示最后经过格式化的输出信息)-->
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date| %-5level%c %newline%message%newline--------------------------------%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG" />
      <levelMax value="WARN" />
    </filter>
  </appender>
  <!--Info-->

  <root>
    <!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
    <!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 -->
    <!-- 如果没有定义LEVEL的值,则缺省为DEBUG -->
    <level value="ALL" />
    <!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
    <appender-ref ref="ErrorLog" />
    <appender-ref ref="InfoLog" />
  </root>
</log4net>

好的 接下来打开这个文件

在这里插入图片描述

加入一行

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

Ok
然后写个Helper

在这里插入图片描述

写入一下代码

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

namespace LogLog
{
   public class LogHelper
    {
        public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("InfoLog");//这里的 InfoLog 和 log4net.config 里的名字要一样
        public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("ErrorLog");//这里的 InfoLog 和 log4net.config 里的名字要一样
        public static void WriteLog(string info)
        {
            if (loginfo.IsInfoEnabled)
            {
                loginfo.Info(info);
            }
        }

        public static void WriteLog(string info, Exception ex)
        {
            if (logerror.IsErrorEnabled)
            {
                logerror.Error(info, ex);
            }
        }
    }
}

好的好的 主程序用一下

using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LogLog
{
   public class Program
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(string));
        static void Main(string[] args)
        {
            LogHelper.WriteLog("开始运行");
            try
            {
                int a = 1;
                a = a / 0;
            }
            catch (Exception ex)
            {

                LogHelper.WriteLog("除法异常",ex);
            }
        }
    }
}

运行 看看文件

在这里插入图片描述

在这里插入图片描述

好了


————————————————
版权声明:本文为CSDN博主「亮大大大」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38083655/article/details/109638978

https://blog.csdn.net/weixin_38083655/article/details/109638978

猜你喜欢

转载自blog.csdn.net/ba_wang_mao/article/details/114930546