不怎么爱写日志,(就是比较懒),后来遇上bug了找不到问题,才决定好好使用日志

其实说实话,log4配置的那些东西记不太住,但也不需要记住什么。百度就有现成的,自己跟着网上配置好之后,稍微记录一下,为以后节省时间。

1、第一步肯定就是引入log4net的包啦 包名就叫:log4net

2、第二步是需要写一个log4的配置文件,netcore项目没有web.config,就创建一个单独的log4net.config来配置log4(还有很多可以加入的配置,主要是为了省事代码少看着舒服,达到记录日志的目的我就把多余的删掉了。百度都有现成的)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    </configSections>
    <log4net>
        <appender name="mylog4" type="log4net.Appender.RollingFileAppender">
            <!--是否追加到文件:日志文件路径,文件夹不存在则新建 -->
            <param name="File" value="Logs\" />
            <!--是否追加到文件-->
            <param name="AppendToFile" value="true" />
            <!--最多产生的日志文件,-1不限-->
            <param name="MaxSizeRollBackups" value="5" />
            <!--最小锁定模型以允许多个进程可以写入同一个文件-->
            <param name="lockingModel"  type="log4net.Appender.FileAppender+MinimalLock" />
            <!--每个文件的大小-->
            <param name="MaximumFileSize" value="10MB" />
            <!--产生多个日志文件,以什么方式生成 (日期[Date],文件大小[Size],混合[Composite])-->
            <param name="RollingStyle" value="Size" />
            <!--此处按日期产生文件夹-->
            <param name="DatePattern" value="yyyy-MM-dd" />
            <!--是否只写到一个文件之中-->
            <param name="StaticLogFileName" value="false" />
            <!--记录的格式。一般用log4net.Layout.PatternLayout布局-->
            <layout type="log4net.Layout.PatternLayout">
                <param name="ConversionPattern" value="%-5p %d %m%n" />
            </layout>
        </appender>
        <logger name="mylog4">
            <level value="all" />
            <appender-ref ref="mylog4" />
        </logger>
        <root>
            <level value="all" />
        </root>
    </log4net>
</configuration>

3、创建一个类,主要就是来写入日志之类的操作。

using log4net;
using log4net.Appender;
using System;
using System.IO;

namespace JwtAPI
{
    public class Log4
    {
        //日志文件夹
        private static string filePath = AppDomain.CurrentDomain.BaseDirectory + @"\Logs\";
        //指定的记录器
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger("mylog4");
        static Log4()
        {
            //使用指定的log4配置文件配置log4
            log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.config"));
            //查看文件夹是否存在,不存在就创建
            if (!Directory.Exists(filePath))
            {
                Directory.CreateDirectory(filePath);
            }
        }

        /// <summary>
        /// 记录日志
        /// </summary>
        /// <param name="msg"></param>
        /// <param name=""></param>
        private static void WriteLog(string msg, bool isWrite ,Action<object> action)
        {
            if (isWrite)
            {
                //日志名字
                string filename = "日志_" + DateTime.Now.ToString("yyyy年MM月dd日") + ".log";
                //默认的log4实例
                var repository = LogManager.GetRepository();
                #region 记录日志
                var appenders = repository.GetAppenders();
                if (appenders.Length > 0)
                {
                    RollingFileAppender targetApder = null;
                    foreach (var Apder in appenders)
                    {
                        if (Apder.Name == "mylog4")
                        {
                            targetApder = Apder as RollingFileAppender;
                            break;
                        }
                    }
                    if (targetApder.Name == "mylog4")//如果是文件输出类型日志,则更改输出路径
                    {
                        if (targetApder != null)
                        {
                            if (!targetApder.File.Contains(filename))
                            {
                                targetApder.File = @"Logs\" + filename;
                                targetApder.ActivateOptions();
                            }
                        }
                    }
                }
                #endregion
                action(msg);
            }
        }

        #region 类型
        /// <summary>
        /// 错误
        /// </summary>
        public static void WriteError(string msg, bool isWrite)
        {
            WriteLog(msg, isWrite, log.Error);
        }
        /// <summary>
        /// 信息
        /// </summary>
        public static void WriteInfo(string msg, bool isWrite)
        {
            WriteLog(msg, isWrite, log.Info);
        }
        /// <summary>
        /// 警告
        /// </summary>
        public static void WriteWarn(string msg, bool isWrite)
        {
            WriteLog(msg, isWrite, log.Warn);
        }       
        #endregion
    }
}

4、将Log4.Config 配置文件 右键属性,设置始终复制

5、直接调用即可。

  Log4.WriteInfo("开始方法",true);
posted on 2022-07-01 19:02  尝尝手指  阅读(697)  评论(0编辑  收藏  举报