using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Xml.Linq;
namespace HslCommunication.LogNet
{
/*************************************************************************************
*
* 目标:
* 1. 高性能的日志类
* 2. 灵活的配置
* 3. 日志分级
* 4. 控制输出
* 5. 方便筛选
* 6. 方便的配置按小时,天,月,年记录
*
*
*
*************************************************************************************/
///
/// 日志类的管理器
///
public class LogNetManagment
{
///
/// 存储文件的时候指示单文件存储
///
internal const int LogSaveModeBySingleFile = 1;
///
/// 存储文件的时候指示根据文件大小存储
///
internal const int LogSaveModeByFileSize = 2;
///
/// 存储文件的时候指示根据日志时间来存储
///
internal const int LogSaveModeByDateTime = 3;
internal const string TextDebug = "调试";
internal const string TextInfo = "信息";
internal const string TextWarn = "警告";
internal const string TextError = "错误";
internal const string TextFatal = "致命";
internal const string TextAbandon = "放弃";
internal const string TextAll = "全部";
///
/// 日志文件的头标志
///
internal const string LogFileHeadString = "Logs_";
internal static string GetDegreeDescription(HslMessageDegree degree)
{
switch (degree)
{
case HslMessageDegree.DEBUG: return TextDebug;
case HslMessageDegree.INFO: return TextInfo;
case HslMessageDegree.WARN: return TextWarn;
case HslMessageDegree.ERROR: return TextError;
case HslMessageDegree.FATAL: return TextFatal;
case HslMessageDegree.None: return TextAbandon;
default: return TextAbandon;
}
}
///
/// 公开的一个静态变量,允许随意的设置
///
public static ILogNet LogNet { get; set; }
///
/// 通过异常文本格式化成字符串用于保存或发送
///
///
///
///
public static string GetSaveStringFromException(string text, Exception ex)
{
StringBuilder builder = new StringBuilder(text);
if (ex != null)
{
if (!string.IsNullOrEmpty(text))
{
builder.Append(" : ");
}
builder.Append("错误消息:");
builder.Append(ex.Message);
builder.Append(Environment.NewLine);
builder.Append("源:");
builder.Append(ex.Source);
builder.Append(Environment.NewLine);
builder.Append("堆栈:");
builder.Append(ex.StackTrace);
builder.Append(Environment.NewLine);
builder.Append("错误类型:");
builder.Append(ex.GetType().ToString());
builder.Append(Environment.NewLine);
builder.Append("调用方法:");
builder.Append(ex.TargetSite?.ToString());
builder.Append(Environment.NewLine);
builder.Append("\u0002/=================================================[ Exception ]================================================/");
}
return builder.ToString();
}
}
}