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();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|