using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WIDESEA_Common.Log
{
public class WriteLog
{
private int fileSize;
private string logFileName;
public static WriteLog log;
static string EquipName;
public static WriteLog GetLog(string equipName)
{
EquipName = equipName;
//if (log == null)
log = new WriteLog(equipName);
log.FileLogPath = AppContext.BaseDirectory + "\\log\\" + DateTime.Now.ToString("yyyyMMdd") /*+ "\\" + EquipName + "_" + DateTime.Now.ToString("yyyyMMdd")*/ + "\\";
return log;
}
public static WriteLog Info(string equipName)
{
EquipName = equipName;
//if (log == null)
log = new WriteLog("Info" + equipName);
log.FileLogPath = AppContext.BaseDirectory + "\\log\\Info\\" + DateTime.Now.ToString("yyyyMMdd") /*+ "\\" + EquipName + "_" + DateTime.Now.ToString("yyyyMMdd")*/ + "\\";
return log;
}
public static WriteLog Error(string equipName)
{
EquipName = equipName;
//if (log == null)
log = new WriteLog("Error" + equipName);
log.FileLogPath = AppContext.BaseDirectory + "\\log\\Error\\" + DateTime.Now.ToString("yyyyMMdd") /*+ "\\" + EquipName + "_" + DateTime.Now.ToString("yyyyMMdd")*/ + "\\";
return log;
}
private WriteLog(string equipName)
{
//初始化大于399M日志文件将自动删除;
this.fileSize = 2048 * 1024 * 200;//50M 2048 * 1024 * 200= 419430000字节(b)=399.9996185兆字节(mb)
//默认路径
//this.FileLogPath = AppContext.BaseDirectory + "\\log\\" + EquipName + "\\";
EquipName = equipName;
if (!string.IsNullOrEmpty(equipName))
this.logFileName = equipName + "_log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
else
this.logFileName = "log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
//this.logFileName = EquipName + "_log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
}
public int FileSize
{
set
{
fileSize = value;
}
get
{
return fileSize;
}
}
public string FileLogPath { set; get; } //= AppContext.BaseDirectory + "\\log\\" + EquipName + "\\";
public string LogFileName
{
set
{
this.logFileName = value;
}
get
{
return this.logFileName;
}
}
object flag = new object();
public void Write(string Message, string equipName)
{
lock (flag)
{
if (!string.IsNullOrEmpty(equipName))
this.logFileName = equipName + "_log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
else
this.logFileName = "log" + DateTime.Now.ToString("yyyyMMdd") + ".log";
this.Write(this.logFileName, Message, equipName);
}
}
public void Write(string LogFileName, string Message, string equipName)
{
//DirectoryInfo path=new DirectoryInfo(LogFileName);
//如果日志文件目录不存在,则创建
if (!Directory.Exists(this.FileLogPath))
{
Directory.CreateDirectory(this.FileLogPath);
}
FileInfo finfo = new FileInfo(this.FileLogPath + LogFileName);
if (finfo.Exists && finfo.Length > fileSize)
{
finfo.Delete();
}
try
{
FileStream fs = new FileStream(this.FileLogPath + LogFileName, FileMode.Append);
StreamWriter strwriter = new StreamWriter(fs);
try
{
DateTime d = DateTime.Now;
strwriter.WriteLine("时间:" + d.ToString());
strwriter.WriteLine(Message);
strwriter.WriteLine("-----------------------------------------------------");
strwriter.WriteLine();
strwriter.Flush();
}
catch (Exception ee)
{
//Console.WriteLine("日志文件写入失败信息:" + ee.ToString());
}
finally
{
strwriter.Close();
strwriter = null;
fs.Close();
fs = null;
}
}
catch (Exception ee)
{
//Console.WriteLine("日志文件没有打开,详细信息如下:");
}
}
///
/// 写入日志(不要多线程操作同一文件,一个设备一个文件夹)
///
/// 日志组
/// 日志名称
/// 内容
/// 数据
public static void Write_Log(string groupName, string logName, string content, object data = null)
{
DateTime nowTime = DateTime.Now;
string basePath = System.Environment.CurrentDirectory + "/Log/" + $"/{groupName}/{nowTime.ToString("yyyy-MM-dd")}";
//如果日志文件目录不存在,则创建
if (!Directory.Exists(basePath))
{
Directory.CreateDirectory(basePath);
}
try
{
FileStream fs = new FileStream(basePath + "/" + logName + $"{nowTime.ToString("yyMMdd")}.txt", FileMode.Append);
StreamWriter strwriter = new StreamWriter(fs);
try
{
strwriter.WriteLine(nowTime.ToString() + "." + nowTime.Millisecond);
strwriter.WriteLine(content);
if (data != null)
{
strwriter.WriteLine(JsonConvert.SerializeObject(data));
}
strwriter.WriteLine("-----------------------------------------------------");
strwriter.WriteLine();
strwriter.Flush();
}
catch { }
finally
{
strwriter.Close();
fs.Close();
}
}
catch { }
}
}
}