namespace LogisTrac
{
/// <summary>
/// 日志类
/// 队列 可年/月/周/日/大小分割
/// 调用方法:
/// Log.Instance.LogDirectory=@"C:\"; 默认为程序运行目录
/// Log.Instance.FileNamePrefix="cxd";默认为log_
/// Log.Instance.CurrentMsgType = MsgLevel.Debug;默认为Error
/// Log.Instance.logFileSplit = LogFileSplit.Daily; 日志拆分类型LogFileSplit.Sizely 大小
/// Log.Instance.MaxFileSize = 5; 默认大小为2M,只有LogFileSplit.Sizely的时候配置有效
/// Log.Instance.LogWrite("aa");
/// Log.Instance.LogWrite("aa", MsgLevel.Debug);
/// </summary>
public class Log : IDisposable
{
private static Log _instance = null;
private static readonly object _synObject = new object();
/// <summary>
///单例
/// </summary>
public static Log Instance
{
get
{
if (null == _instance)
{
lock (_synObject)
{
if (null == _instance)
{
_instance = new Log();
}
}
}
return _instance;
}
}
/// <summary>
/// 日志对象的缓存队列
/// </summary>
private static Queue<Msg> _msgs;
/// <summary>
/// 日志写入线程的控制标记 ture写中|false没有写
/// </summary>
private bool _state;
private string _logDirectory = AppDomain.CurrentDomain.BaseDirectory;
/// <summary>
/// 日志文件存放目录
/// </summary>
public string LogDirectory
{
get { return _logDirectory; }
set { _logDirectory = value; }
}
private LogFileSplit _logFileSplit = LogFileSplit.Sizely;
/// <summary>
/// 日志拆分类型
/// </summary>
public LogFileSplit logFileSplit
{
get { return _logFileSplit; }
set { _logFileSplit = value; }
}
private MsgLevel _currentLogLevel = MsgLevel.Error;
/// <summary>
/// 当前日志记录等级
/// </summary>
public MsgLevel CurrentMsgType
{
get { return _currentLogLevel; }
set { _currentLogLevel = value; }
}
/// <summary>
/// 当前负责记录日志文件的名称
/// </summary>
private string _currentFileName="1.log";
private string _fileNamePrefix = "log_";
/// <summary>
/// 日志的前缀名称,默认为log_
/// </summary>
public string FileNamePrefix
{
get { return _fileNamePrefix; }
set { _fileNamePrefix = value; }
}
/// <summary>
/// 日志文件生命周期的时间标记
/// </summary>
private DateTime _CurrentFileTimeSign = new DateTime();
private int _maxFileSize = 2;
/// <summary>
/// 单个日志文件默认大小(单位:兆)
/// </summary>
public int MaxFileSize
{