using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace XS_DAL
{
///
/// 日志记录类
///
public static class LogHelper
{
///
/// 系统异常日志
///
/// 异常类
public static void ErrorLog(Exception ex)
{
try
{
string path = System.Environment.CurrentDirectory;
string threadId = Thread.CurrentThread.ManagedThreadId.ToString();
string fName = path + "\\ErrorLog\\线程" + threadId + " " + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
string newPath = path + "\\ErrorLog\\";
if (!System.IO.Directory.Exists(newPath))
{
System.IO.Directory.CreateDirectory(newPath);
}
FileInfo fileInfo = new FileInfo(fName);
if (fileInfo.Exists == false)
{
using (StreamWriter sw = fileInfo.CreateText())
{
sw.WriteLine("/********************************************************************************/");
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("信息:" + ex.Message);
sw.WriteLine("实例:" + ex.InnerException);
sw.WriteLine("方法:" + ex.TargetSite);
sw.WriteLine("堆栈:" + ex.StackTrace);
sw.WriteLine();
sw.Flush();
sw.Close();
}
FilesDelete(fileInfo.DirectoryName);
}
else
{
using (StreamWriter sw = fileInfo.AppendText())
{
sw.WriteLine("/********************************************************************************/");
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("信息:" + ex.Message);
sw.WriteLine("实例:" + ex.InnerException);
sw.WriteLine("方法:" + ex.TargetSite);
sw.WriteLine("堆栈:" + ex.StackTrace);
sw.WriteLine();
sw.Flush();
sw.Close();
}
}
}
catch (Exception)
{
}
}
///
/// 系统异常日志
///
/// 目录名
/// 异常类
public static void ErrorLog(string dName, Exception ex)
{
try
{
string path = System.Environment.CurrentDirectory;
string newPath = path + "\\" + dName + "\\";
if (!System.IO.Directory.Exists(newPath))
{
System.IO.Directory.CreateDirectory(newPath);
}
string fName = newPath + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
FileInfo fileInfo = new FileInfo(fName);
if (fileInfo.Exists == false)
{
using (StreamWriter sw = fileInfo.CreateText())
{
sw.WriteLine("/********************************************************************************/");
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("信息:" + ex.Message);
sw.WriteLine("实例:" + ex.InnerException);
sw.WriteLine("方法:" + ex.TargetSite);
sw.WriteLine("堆栈:" + ex.StackTrace);
sw.WriteLine();
sw.Flush();
sw.Close();
}
FilesDelete(fileInfo.DirectoryName);
}
else
{
using (StreamWriter sw = fileInfo.AppendText())
{
sw.WriteLine("/********************************************************************************/");
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("信息:" + ex.Message);
sw.WriteLine("实例:" + ex.InnerException);
sw.WriteLine("方法:" + ex.TargetSite);
sw.WriteLine("堆栈:" + ex.StackTrace);
sw.WriteLine();
sw.Flush();
sw.Close();
}
}
}
catch (Exception)
{
}
}
///
/// 接口收发日志
///
/// 方法名
/// 发送
/// 接收
public static void InterfaceLog(string strFunctionName, string strSend, string strRecieve)
{
try
{
string path = System.Environment.CurrentDirectory + "\\InterfaceLog\\";
string fName = DateTime.Now.ToString("yyyy-MM-dd") + ".log";
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
FileInfo fileInfo = new FileInfo(path + fName);
if (fileInfo.Exists == false)
{
using (StreamWriter sw = fileInfo.CreateText())
{
sw.WriteLine("/********************************************************************************/");
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("方法:" + strFunctionName);
sw.WriteLine("发送:" + strSend);
sw.WriteLine("收到:" + strRecieve);
sw.WriteLine();
sw.Flush();
sw.Close();
}
FilesDelete(fileInfo.DirectoryName);
}
else
{
using (StreamWriter sw = fileInfo.AppendText())
{
sw.WriteLine("/********************************************************************************/");
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("方法:" + strFunctionName);
sw.WriteLine("发送:" + strSend);
sw.WriteLine("收到:" + strRecieve);
sw.WriteLine();
sw.Flush();
sw.Close();
}
}
}
catch (Exception)
{
}
}
///
/// 操作日志
///
/// 日志信息
public static void OperateLog(string dirName, string messsage)
{
try
{
string path = System.Environment.CurrentDirectory;
string newPath = path + "\\" + dirName + "\\";
if (!System.IO.Directory.Exists(newPath))
{
System.IO.Directory.CreateDirectory(newPath);
}
string fName = newPath + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
FileInfo fileInfo = new FileInfo(fName);
if (fileInfo.Exists == false)
{
using (StreamWriter sw = fileInfo.CreateText())
{
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("内容:" + messsage);
sw.WriteLine();
sw.Flush();
sw.Close();
}
FilesDelete(fileInfo.DirectoryName);
}
else
{
using (StreamWriter sw = fileInfo.AppendText())
{
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("内容:" + messsage);
sw.WriteLine();
sw.Flush();
sw.Close();
}
}
}
catch (Exception)
{
}
}
///
/// 创建接口访问日志
///
/// 方法名
/// 请求JSON
/// 返回JSON
public static void LogOperation(string methodName, string requestJson, string returnJson)
{
try
{
string path = System.Environment.CurrentDirectory;
string newPath = path + "\\" + methodName + "\\";
if (!System.IO.Directory.Exists(newPath))
{
System.IO.Directory.CreateDirectory(newPath);
}
string fName = newPath + DateTime.Now.ToString("yyyy-MM-dd") + ".log";
FileInfo fileInfo = new FileInfo(fName);
if (fileInfo.Exists == false)
{
using (StreamWriter sw = fileInfo.CreateText())
{
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("请求:" + requestJson.Replace("\r\n", "").Replace("\n", ""));
sw.WriteLine("反馈:" + returnJson.Replace("\r\n", "").Replace("\n", ""));
sw.WriteLine();
sw.Flush();
sw.Close();
}
FilesDelete(fileInfo.DirectoryName);
}
else
{
using (StreamWriter sw = fileInfo.AppendText())
{
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff"));
sw.WriteLine("请求:" + requestJson.Replace("\r\n", "").Replace("\n", ""));
sw.WriteLine("反馈:" + returnJson.Replace("\r\n", "").Replace("\n", ""));
sw.WriteLine();
sw.Flush();
sw.Close();
}
}
}
catch (Exception)
{
}
}
private static void FilesDelete(string delURL, string suffix = ".log", int days = 30)
{
try
{
DirectoryInfo root = new DirectoryInfo(delURL);
FileInfo[] files = root.GetFiles();
if (files.Length <= 10)
{
return;
}
foreach (FileInfo fi in files)
{
if (fi.Extension.ToUpper() == suffix.ToUpper())
{
DateTime createTime = fi.CreationTime;
DateTime newTime = DateTime.Now.AddDays(-1);
if (Convert.ToDateTime(fi.CreationTime) <= DateTime.Now.AddDays(-days))
{
createTime = fi.CreationTime;
fi.Delete();
}
}
}
}
catch (Exception)
{
throw;
}
}
}
}