功能描述:实现一个本地日志记录,可配选项
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)
打印日志
整体的代码逻辑比较简单,实现起来也不复杂