(自用)MyLog 简单日志 .net6.0 等

appsettings.json

cs 复制代码
{
  "LogOnOff": true //true 开启日志;false 关闭日志
}

MyLog.cs

cs 复制代码
using System.ComponentModel;

namespace Namespace 
{
    /// <summary>
    /// 日志类型 枚举
    /// </summary>
    public enum LogType
    {
        [Description("调试日志")]
        debug,//日常调试信息
        //[Description("警告日志")]
        //warning,//有错但是程序能继续执行
        [Description("报错日志")]
        error,//有错程序抛出异常
    }

    /// <summary>
    /// 创建日志文件夹
    /// 创建日志文件
    /// 写入日志内容
    /// </summary>
    public class MyLog
    {
        public static bool LogOnOff = Tools.ToBool(CustomConfigManager.GetConfig("LogOnOff"), false);//日志开关,配置在config文件

        /// <summary>
        /// 写日志
        /// </summary>
        /// <param name="log">日志(必填)</param>
        /// <param name="ex">报错信息(选填)</param>
        /// <param name="LogType">日志类型(默认:debug)</param>
        public static void WriteLog(string log, string ex = "", LogType logType = LogType.debug)
        {
            if (LogOnOff == true)//日志开关,配置在config文件
            {
                try
                {
                    string path = "log/" + logType;//文件夹路径:log/info   或者  log/error   这样的...
                    string file = path + "/" + logType + "_" + DateTime.Today.ToString("yyyyMMdd") + ".log";//文件路径+文件名+扩展名
                    if (!Directory.Exists(path))//判断文件夹是否存在
                    {
                        Directory.CreateDirectory(path);//不存在,创建文件夹
                    }
                    if (logType == LogType.error)//报错日志(一般文件比较大可能几个G,往往打不开),所以error以分钟为单位创建文件(拆分成多个小文件)
                    {
                        file = path + "/" + logType + "_" + DateTime.Today.ToString("yyyyMMddHHmm") + ".log";//文件路径+文件名+扩展名
                    }
                    using (StreamWriter sw = new StreamWriter(file, true))//创建文件或者打开已有文件
                    {
                        sw.WriteLine("------------------------------" + DateTime.Now + "------------------------------");
                        if (!string.IsNullOrWhiteSpace(log)) sw.WriteLine(log);//写入日志
                        if (!string.IsNullOrWhiteSpace(ex)) sw.WriteLine(ex);//写入报错信息(如果需要的话)
                        sw.WriteLine("");//空一行
                        sw.Close();
                    }
                }
                catch { }
            }
        }
    }
}

调用:

MyLog.WriteLog("正在启动监听服务...");//debug日志

MyLog.WriteLog($"报错: {ex.Message}", ex.ToString(), LogType.error);//error日志


预览:

相关推荐
“AI国潮设计-小江”19 分钟前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁英歌舞猫IP & 创意甜品设计(附ComfyUI工作流与商业授权说明)
开发语言·人工智能·python·prompt·aigc
529宝宝起名网27 分钟前
用 Python 分析汉字字源与起名用字的关联规律:从六书结构到文化寓意的起名偏好洞察
开发语言·python
linx29535 分钟前
单元九 · 零基础路线图-第 7–9 周·类与 RAII
c语言·开发语言·数据结构·c++·嵌入式硬件·算法
XiaoZhenHua981 小时前
C#工业机器视觉Recipe配方系统设计:多型号、多相机、多工位参数如何统一管理
c#·软件架构·机器视觉·工业自动化·工业软件·recipe
白色的北极熊2 小时前
c语言 输出菱形字符串
c语言·开发语言
学习智者2 小时前
《玄》IDE v3.6.3重磅发布:全功能修复与性能飞跃
开发语言·c++·ide·算法·中文语言 玄
奔跑吧树袋熊2 小时前
多租户隔离该做到哪一层:从连接池到 ORM 的取舍
开发语言·数据库·oracle·系统架构
大江东去浪淘尽千古风流人物2 小时前
【LoMa】局部特征匹配重访:从LoMa-B到旋转不变LoMa-R的架构与工程实践
开发语言·深度学习·计算机视觉·r语言·视觉定位·sfm·局部特征匹配
菜鸟~noob2332 小时前
【电子战】测向精度极限——克拉美-罗下限(CRLB)与误差分析【含matlab代码】
开发语言·matlab
m0_734571762 小时前
深入理解C++ 析构函数<二>析构顺序
开发语言·c++