public class TxtHelper
{
public TxtHelper()
{
_defauleDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log");
_msgs = new ConcurrentQueue<string>();
_tasks = new Task[1];
}
public static bool TCPBuf = false;
public static bool TCPSend = false;
public static string LogFilePLC = string.Empty;
private static object lockSync = new object();
private string _defauleDir = string.Empty;
private ConcurrentQueue<string> _msgs = null;
private Task[] _tasks = null;
public static TxtHelper _init = new TxtHelper();
public static TxtHelper Init { get { return _init; } }
public void WriteMsg(string fileName, string msg)
{
lock (lockSync)
{
var tmpDir = Path.GetDirectoryName(fileName);
if (string.IsNullOrEmpty(tmpDir))
return;
if (!Directory.Exists(tmpDir))
{
Directory.CreateDirectory(tmpDir);
}
using (FileStream file = new FileStream(fileName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
StreamWriter bw = new StreamWriter(file);
bw.WriteLine(msg);
bw.Flush();
bw.Close();
}
}
}
public void WriteLog(string msg)
{
string fileName = Path.Combine(_defauleDir, "LogDebug", $"{DateTime.Now.ToString("yyyyMMdd")}-Log.txt");
WriteMsg(fileName, $"[{DateTime.Now.ToString("HH:mm:ss")}]:{msg}");
}
/// <summary>
/// 将数据导出到csv文件中
/// </summary>
/// <param name="fileName"></param>
/// <param name="table"></param>
public bool WriteCSV(string fileName, DataTable table)
{
if (table == null || table.Rows.Count < 1)
return false;
try
{
var tmpDir = Path.GetDirectoryName(fileName);
if (!Directory.Exists(tmpDir))
{
Directory.CreateDirectory(tmpDir);
}
using (FileStream file = new FileStream(fileName, FileMode.CreateNew, FileAccess.ReadWrite))
{
StreamWriter bw = new StreamWriter(file, Encoding.GetEncoding("GB2312"));
foreach (DataColumn item in table.Columns)
{
bw.Write(item.ColumnName + ",");
bw.Flush();
}
bw.WriteLine();
foreach (DataRow row in table.Rows)
{
for (int i = 0; i < table.Columns.Count; i++)
{
bw.Write(row[i].ToString() + ",");
}
bw.WriteLine();
bw.Flush();
}
bw.Close();
}
return true;
}
catch (Exception)
{
return false;
}
}
/// <summary>
/// 将数据连续导出到csv文件中
/// </summary>
/// <param name="fileName"></param>
/// <param name="table"></param>
/// <returns></returns>
public bool DataWriteCSV(string fileName, DataTable table)
{
if (table == null || table.Rows.Count < 1)
return false;
try
{
var tmpDir = Path.GetDirectoryName(fileName);
if (!Directory.Exists(tmpDir))
{
Directory.CreateDirectory(tmpDir);
}
using (FileStream file = new FileStream(fileName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
{
StreamWriter bw = new StreamWriter(file, Encoding.GetEncoding("GB2312"));
foreach (DataRow row in table.Rows)
{
for (int i = 0; i < table.Columns.Count; i++)
{
bw.Write(row[i].ToString() + ",");
}
bw.WriteLine();
bw.Flush();
}
bw.Close();
}
return true;
}
catch (Exception)
{
return false;
}
}
public void ExportToSvc(DataTable dt, string savaPath)
{
if (File.Exists(savaPath))
{
File.Delete(savaPath);
}
StringBuilder stringBuilder = new StringBuilder();
StringBuilder stringBuilder2 = new StringBuilder();
int num = 0;
try
{
using (StreamWriter streamWriter = new StreamWriter(new FileStream(savaPath, FileMode.CreateNew), Encoding.GetEncoding("GB2312")))
{
for (num = 0; num <= dt.Columns.Count - 1; num++)
{
stringBuilder.Append(dt.Columns[num].ColumnName);
stringBuilder.Append(",");
}
stringBuilder.Remove(stringBuilder.Length - 1, 1);
streamWriter.WriteLine(stringBuilder);
foreach (DataRow row in dt.Rows)
{
stringBuilder2.Remove(0, stringBuilder2.Length);
for (num = 0; num <= dt.Columns.Count - 1; num++)
{
stringBuilder2.Append(row[num].ToString());
stringBuilder2.Append(",");
}
stringBuilder2.Remove(stringBuilder2.Length - 1, 1);
streamWriter.WriteLine(stringBuilder2);
}
}
}
catch (Exception ex)
{
throw ex;
}
}
public void WriteDebugBuf(string debug)
{
string fileName = Path.Combine(_defauleDir, "LogDebug", $"{DateTime.Now.ToString("yyyyMMdd")}-Buf.txt");
if (TCPBuf)
{
WriteMsg(fileName, debug);
}
}
public void WriteDebugSend(string debug)
{
string fileName = Path.Combine(_defauleDir, "LogDebug", $"{DateTime.Now.ToString("yyyyMMdd")}-Buf.txt");
if (TCPSend)
{
WriteMsg(fileName, debug);
}
}
public void WritePro(string msg)
{
string fileName = Path.Combine(_defauleDir, "LogDebug", $"{DateTime.Now.ToString("yyyyMMdd")}-Pro.txt");
WriteMsg(fileName, msg);
}
public void WriteError(string msg)
{
string fileName = Path.Combine(_defauleDir, "LogError", $"{DateTime.Now.ToString("yyyyMMdd")}-Error.txt");
_msgs.Enqueue(msg);
if (_tasks[0] == null || _tasks[0].IsCompleted)
{
_tasks[0] = Task.Run(() =>
{
string tmpMsg;
while (_msgs.TryDequeue(out tmpMsg))
{
WriteMsg(fileName, $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}]:{tmpMsg}");
System.Threading.Thread.Sleep(10);
}
});
}
}
public void WriteError(string msg, Exception ex)
{
string fileName = Path.Combine(_defauleDir, "LogError", $"{DateTime.Now.ToString("yyyyMMdd")}-Error.txt");
StringBuilder builder = new StringBuilder();
builder.AppendLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}]:{msg}");
if (ex != null)
{
builder.AppendLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}]:{ex.Message}");
builder.AppendLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}]:{ex.StackTrace}");
}
_msgs.Enqueue(builder.ToString());
if (_tasks[0] == null || _tasks[0].IsCompleted)
{
_tasks[0] = Task.Run(() =>
{
string tmpMsg;
while (_msgs.TryDequeue(out tmpMsg))
{
WriteMsg(fileName, tmpMsg);
System.Threading.Thread.Sleep(10);
}
});
}
}
public void LogMes(string msg)
{
string fileName = Path.Combine(_defauleDir, "LogDebug", $"{DateTime.Now.ToString("yyyyMMdd")}-Mes.txt");
WriteMsg(fileName, $"[{DateTime.Now.ToString("HH:mm:ss")}]:{msg}");
}
public void LogPLC(string msg)
{
LogFilePLC = Path.Combine(_defauleDir, "LogDebug", $"{DateTime.Now.ToString("yyyyMMdd")}-PLC.txt");
WriteMsg(LogFilePLC, $"[{DateTime.Now.ToString("HH:mm:ss")}]:{msg}");
}
}
日志文件,DataTable导出csv文件
最新推荐文章于 2024-04-28 18:06:32 发布