StableVersion4.3/HL_FristAidPlatform_Help/Help.cs

167 lines
5.4 KiB
C#
Raw Permalink Normal View History

2024-03-11 09:47:34 +08:00
using log4net;
using log4net.Config;
using log4net.Repository;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Data;
using System.IO;
namespace HL_FristAidPlatform_Help
{
public class Help
{
private static ILoggerRepository repository { get; set; }
private static ILog _log;
public static ILog log
{
get
{
if (_log == null)
{
Configure();
}
return _log;
}
}
public static void Configure(string repositoryName = "NETCoreRepository", string configFile = "log4net.config")
{
repository = LogManager.CreateRepository(repositoryName);
XmlConfigurator.Configure(repository, new FileInfo(configFile));
_log = LogManager.GetLogger(repositoryName, "RollingLogFileAppender");
}
/// <summary>
/// 信息
/// </summary>
/// <param name="msg"></param>
public static void Info(string msg)
{
log.Info(msg);
}
/// <summary>
/// 警告
/// </summary>
/// <param name="msg"></param>
public static void Warn(string msg)
{
log.Warn(msg);
}
/// <summary>
/// 错误
/// </summary>
/// <param name="msg"></param>
/// <param name="exception"></param>
public static void Error(string msg, Exception exception = null)
{
log.Error(msg, exception);
}
/// <summary>
/// 调试
/// </summary>
/// <param name="msg"></param>
public static void Debug(string msg)
{
log.Debug(msg);
}
/// <summary>
/// 严重
/// </summary>
/// <param name="msg"></param>
public static void Fatal(string msg)
{
log.Fatal(msg);
}
/// <summary>
/// DataTable转换成Json字符
/// </summary>
/// <param name="dataTable">数据表</param>
/// <returns></returns>
public static string DataTableToJsonStr(DataTable dataTable)
{
string JsonStr = string.Empty;
if (dataTable.Rows.Count > 0)
{
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
foreach (DataRow item in dataTable.Rows)
{
string row = "";
for (int i = 0; i < dataTable.Columns.Count; i++)
{
row += JsonConvert.SerializeObject(dataTable.Columns[i].ColumnName) + ":";
//row += JsonConvert.SerializeObject(item[i]) + ",";
row += JsonConvert.SerializeObject(item[i], Formatting.Indented, timeConverter) + ",";//时间字段格式化去掉字符T
}
row = row.Remove(row.Length - 1);
JsonStr += "{" + row + "}" + ",";
}
JsonStr = JsonStr.Remove(JsonStr.Length - 1);
}
JsonStr = "[" + JsonStr + "]";
return JsonStr;
}
/// <summary>
/// DataSet转换成Json字符,只限标准的JSON数据
/// 例如Json{t1:[{name:'数据name',type:'数据type'}]}
/// 或 Json{t1:[{name:'数据name',type:'数据type'}],t2:[{id:'数据id',gx:'数据gx',val:'数据val'}]}
/// </summary>
/// <param name="dataSet">数据源</param>
/// <returns></returns>
public static string DataSetToJsonStr(DataSet dataSet)
{
string JsonStr = string.Empty;
if (dataSet.Tables.Count > 0)
{
int i = 0;
foreach (DataTable table in dataSet.Tables)
{
if (table.Rows.Count > 0)
{
i++;
string tableName = "table" + i;
JsonStr += "\"" + tableName + "\"" + ":" + DataTableToJsonStr(table) + ",";
}
}
}
if (JsonStr.Length > 0)
{
JsonStr = JsonStr.Remove(JsonStr.Length - 1);
JsonStr = "{" + JsonStr + "}";
}
return JsonStr;
}
/// <summary>
/// 记录错误日志
/// 精确到每分钟
/// </summary>
/// <param name="file_name_prefix">文件名前缀</param>
/// <param name="text">记录内容</param>
public static void WriteErrorLog(string file_name_prefix = "", string text = "")
{
if (string.IsNullOrEmpty(file_name_prefix))
{
file_name_prefix = "Debug";
}
string path = AppDomain.CurrentDomain.BaseDirectory;
path = Path.Combine(path, "logs\\");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string fileFullName = Path.Combine(path, string.Format("{0}{1}.txt", file_name_prefix, DateTime.Now.ToString("yyyyMMdd-HHmm")));
using (StreamWriter output = File.AppendText(fileFullName))
{
output.WriteLine(text);
output.Close();
}
}
}
}