日志篇二、C# 实现文件日志记录,分级别、按日期自动删除回滚

功能描述:实现一个本地日志记录,可配选项

1、日志名称、扩展名及日志输出路径

2、是否是每天一个日志文件、最多记录天数(超出限定天数的自动删除)

3、日志等级、是否激活本地记录

代码

public class FileLogger : ILogger
    {
        private string expandName = string.Empty;
        private string fileName = string.Empty;
        private string filePath = string.Empty;
        private bool intervalMode = true;
        private int logDay = 7;
        private LogType level = LogType.Info;
        private bool activeFileLog = false;
        /// <summary>
        /// 文件日志
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <param name="fileName">文件名</param>
        /// <param name="expandName">扩展名</param>
        public FileLogger(string filePath, string fileName, string expandName){}
        /// <summary>
        /// 清理文件日志
        /// </summary>
        public void Clear(){}
        // 日志输出
        public void Log(LogEventArgs e){}
        /// <summary>
        /// 是否每天记录一个文件
        /// </summary>
        public bool IntervalMode
        {
            get
            {
                return intervalMode;
            }
            set
            {
                intervalMode = value;
            }
        }
        /// <summary>
        /// 最大记录日志天数
        /// </summary>
        public int LogDay
        {
            get
            {
                return logDay;
            }
            set
            {
                logDay = (value < 1) ? 1 : value;
            }
        }
        /// <summary>
        /// 日志等级
        /// </summary>
        public LogType Level
        {
            get
            {
                return level;
            }
            set
            {
                level = value;
            }
        }
        /// <summary>
        /// 是否激活文件日志
        /// </summary>
        public bool ActiveFileLog
        {
            get { return activeFileLog; }
            set { activeFileLog = value; }
        }
}

ILogger接口,用于后面博客中功能介绍时使用

public interface ILogger
    {
        void Log(LogEventArgs e);
    }

日志等级的枚举

LogType

public enum LogType
    {
        Debug,
        Info,
        Notify,
        Alert,
        Error,
    }

LogEventArgs

public class LogEventArgs
    {
        private string logLocation;
        private string logMsg;
        private string logTip;
        private LogType logType;

        public LogEventArgs(string logMsg) : this(LogType.Info, "", logMsg, "")
        {
        }

        public LogEventArgs(LogType logType, string logMsg) : this(logType, "", logMsg, "")
        {
        }

        public LogEventArgs(LogType logType, string logLocation, string logMsg, string logTip)
        {
            this.logType = LogType.Info;
            this.logLocation = string.Empty;
            this.logMsg = string.Empty;
            this.logTip = string.Empty;
            this.logType = logType;
            this.logLocation = logLocation;
            this.logMsg = logMsg;
            this.logTip = logTip;
        }

        public string LogLocation
        {
            get
            {
                return this.logLocation;
            }
        }

        public string LogMsg
        {
            get
            {
                return this.logMsg;
            }
        }

        public string LogTip
        {
            get
            {
                return this.logTip;
            }
        }

        public LogType LogType
        {
            get
            {
                return this.logType;
            }
        }
    }

以上就是FileLogger实现,下面就说下每一个成员函数的实现方法

public FileLogger(string filePath, string fileName, string expandName)

在构造函数中,传入我们外配的日志路径、文件名及扩展名

在这里需要做两件事

1、不存在的目录就创建目录,利用文件名和扩展名创建自己制定规则的日志文件

2、调用Clear(),类似于初始化一下

 

public void Clear()

主要作用就是,清除指定天数的日志文件

public void Log(LogEventArgs e)

打印日志

 

整体的代码逻辑比较简单,实现起来也不复杂

源码下载

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

血虐丘比特

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

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

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

打赏作者

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

抵扣说明:

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

余额充值