using System;
using System.IO;
using System.Text;
namespace ZB.QueueSys.Common
{
public class LogHelper
{
//private static LogHelper instance;
//public static LogHelper Instance
//{
// get
// {
// if (instance == null) instance = new LogHelper();
// return LogHelper.instance;
// }
//}
//定义一个用于保存静态变量的实例
private static LogHelper instance = null;
//定义一个保证线程同步的标识
private static readonly object locker = new object();
//构造函数为私有,使外界不能创建该类的实例
private LogHelper() { }
public static LogHelper Instance
{
get
{
if (instance == null)
{
lock (locker)
{
if (instance == null) instance = new LogHelper();
}
}
return instance;
}
}
public static LogHelper Default = new LogHelper();
public string OutputLog = PubVariable.Instance.IsUseLog;
public const string DIAG = "Diag";
public const string Enrol = "Enrol";
public StringBuilder sb = new StringBuilder();
public void WriteCacheLog(string msg)
{
sb.Append(DateTime.Now.ToString("HH:mm:ss") + ": " + msg + "\r\n");
}
public void SaveLogToTxt(string logFile)
{
bool isAppend = false;
if (File.Exists(logFile))
{
//File.Delete(logFile);
isAppend = true;
}
using (StreamWriter sw = new StreamWriter(logFile, isAppend))
{
sw.WriteLine(sb.ToString());
sw.Flush();
sw.Close();
}
}
/// <summary>
/// 保存并输出日志
/// </summary>
/// <param name="WriteTxt"></param>
/// <param name="isOutPut">0、不输出</param>
public void SaveTextAndOutPut(string WriteTxt, string isOutPut)
{
try
{
if (isOutPut == "0") return;
string LogPath = "C:\\ZB.QueueSys\\TempLog\\";
LogPath = PubVariable.Instance.LogFilePath;
if (!Directory.Exists(LogPath))
{
Directory.CreateDirectory(LogPath);
}
LogPath += System.DateTime.Now.ToString("yyyyMMdd");
if (!Directory.Exists(LogPath))
{
Directory.CreateDirectory(LogPath);
}
//创建一个文件流,用以写入或者创建一个StreamWriter
FileStream fs = new FileStream(LogPath + "\\D" + System.DateTime.Now.Hour.ToString() + ".txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.Flush();
// 使用StreamWriter来往文件中写入内容
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
// 把richTextBox1中的内容写入文件
m_streamWriter.WriteLine(DateTime.Now.ToString("HH:mm:ss") + ": \n\r" + WriteTxt);
//关闭此文件
m_streamWriter.Flush();
m_streamWriter.Close();
}
catch
{
}
}
public void SaveText(string WriteTxt)
{
try
{
if (OutputLog == "0") return;
string LogPath = "C:\\ZB.QueueSys\\TempLog\\";
LogPath = PubVariable.Instance.LogFilePath;
if (!Directory.Exists(LogPath))
{
Directory.CreateDirectory(LogPath);
}
LogPath += System.DateTime.Now.ToString("yyyyMMdd");
if (!Directory.Exists(LogPath))
{
Directory.CreateDirectory(LogPath);
}
//创建一个文件流,用以写入或者创建一个StreamWriter
FileStream fs = new FileStream(LogPath + "\\D" + System.DateTime.Now.Hour.ToString() + ".txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.Flush();
// 使用StreamWriter来往文件中写入内容
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
// 把richTextBox1中的内容写入文件
m_streamWriter.WriteLine(DateTime.Now.ToString("HH:mm:ss") + ": \n\r" + WriteTxt);
//关闭此文件
m_streamWriter.Flush();
m_streamWriter.Close();
}
catch
{
}
}
public void SaveAsText(string WriteTxt)
{
try
{
string LogPath = "C:\\Temp\\Diag\\";
if (!Directory.Exists(LogPath)) return; //作为开关用
LogPath += System.DateTime.Now.ToString("yyyyMMdd");
if (!Directory.Exists(LogPath)) Directory.CreateDirectory(LogPath);
//创建一个文件流,用以写入或者创建一个StreamWriter
FileStream fs = new FileStream(LogPath + "\\D" + System.DateTime.Now.Hour.ToString() + ".txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.Flush();
// 使用StreamWriter来往文件中写入内容
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
// 把richTextBox1中的内容写入文件
m_streamWriter.WriteLine(DateTime.Now.ToString("HH:mm:ss") + ": " + WriteTxt);
//关闭此文件
m_streamWriter.Flush();
m_streamWriter.Close();
}
catch
{
}
}
public void SaveAsText(string WriteTxt, string Studyid)
{
try
{
string LogPath = "C:\\Temp\\DIAG\\";
if (!Directory.Exists(LogPath)) return; //作为开关用
LogPath = LogPath + System.DateTime.Now.ToString("yyyyMMdd");
if (!Directory.Exists(LogPath)) Directory.CreateDirectory(LogPath);
if (string.IsNullOrEmpty(Studyid)) Studyid = "1000";
string filename = LogPath + "\\" + Studyid + ".txt";
//创建一个文件流,用以写入或者创建一个StreamWriter
FileStream fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.Flush();
// 使用StreamWriter来往文件中写入内容
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
// 把richTextBox1中的内容写入文件
m_streamWriter.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + ": " + WriteTxt);
//关闭此文件
m_streamWriter.Flush();
m_streamWriter.Close();
}
catch
{
}
}
}
public class MyLogHelper
{
/// <summary>
/// 信息类型
/// </summary>
public enum LogLevel
{
/// <summary>
/// 普通信息
/// </summary>
Info,
/// <summary>
/// 错误
/// </summary>
Error
}
/// <summary>
/// 普通信息写入日志
/// </summary>
/// <param name="message"></param>
/// <param name="logType"></param>
public static void Info(string message, LogType logType = LogType.Overall)
{
if (string.IsNullOrEmpty(message)) return;
var path = string.Format(@"\{0}\", logType.ToString());
WriteLog(path, "", message);
}
/// <summary>
/// 自定义错误信息写入
/// </summary>
/// <param name="message">自定义消息</param>
/// <param name="logType">存储目录类型</param>
public static void Error(string message, LogType logType = LogType.Overall)
{
if (string.IsNullOrEmpty(message)) return;
var path = string.Format(@"\{0}\", logType.ToString());
WriteLog(path, "Error ", message);
}
/// <summary>
/// 程序异常信息写入
/// </summary>
/// <param name="e">异常</param>
/// <param name="logType">存储目录类型</param>
public static void Error(Exception e, LogType logType = LogType.Overall)
{
if (e == null) return;
var path = string.Format(@"\{0}\", logType.ToString());
WriteLog(path, "Error ", e.Message);
}
/// <summary>
/// 写日志的最终执行动作
/// </summary>
/// <param name="path">文件路径</param>
/// <param name="prefix">前缀</param>
/// <param name="message">内容</param>
public static void WriteLog(string path, string prefix, string message)
{
path = @"C:\RisLog\";
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
var fileName = string.Format("{0}{1}.Log", prefix, DateTime.Now.ToString("yyyy-MM-dd"));
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
using (FileStream fs = new FileStream(path + fileName, FileMode.Append, FileAccess.Write, FileShare.Write, 1024, FileOptions.Asynchronous))
{
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(DateTime.Now.ToString("HH:mm:ss") + " " + message + "\r\n");
IAsyncResult writeResult = fs.BeginWrite(buffer, 0, buffer.Length,
(asyncResult) =>
{
var fStream = (FileStream)asyncResult.AsyncState;
fStream.EndWrite(asyncResult);
},
fs);
fs.Close();
}
}
}
/// <summary>
/// 日志文件存放文件夹分类枚举
/// </summary>
public enum LogType
{
/// <summary>
/// 普通信息
/// </summary>
Info,
/// <summary>
/// 错误
/// </summary>
Error,
/// <summary>
/// 其他全部信息
/// </summary>
Overall,
}
}
博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!

浙公网安备 33010602011771号