167 lines
5.4 KiB
C#
167 lines
5.4 KiB
C#
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();
|
||
}
|
||
}
|
||
}
|
||
}
|