前言
在程序的操作过程中,对于删除和修改的操作,最好还是有个记录,这样即使出了错,也好查找弥补,所以写一个日志记录的类是很有必要的。
/// <summary>
/// 保存日志
/// </summary>
public class Logging
{
public static string Rcd = "Server=.;User Id=sa;Pwd=sa;DataBase=test";//数据库的连接信息
#region 日志分类
/// <summary>
/// 保存普通日志
/// </summary>
/// <param name="message"></param>
public static void Writelog(string message)
{
string logContent = string.Format("[{0}] =>{1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), message);//按顺序记录一下时间
SetFile(@"Log.txt", logContent);
}
/// <summary>
/// 保存关键日志
/// </summary>
/// <param name="message"></param>
public static void WriteKeylog(string message)
{
var logContent = string.Format("[{0}]=>{1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), message);
SetFile( DateTime.Now.Date.ToString("yyyy-MM-dd")+ "KeyLog.txt", logContent);
}
public static void WriteToDatabase(string WorkNum,string Name,string OrigenDept,string EndDept)
{
string Time = string.Format(System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
string insert = "insert into ChangeDeptRecordList(ChangeTime,WorkNum,DocName,FirstDept,EndDept) values('"+Time+"','"+WorkNum+"','"+Name+"','"+OrigenDept+"','"+EndDept+"')";
Csqlcmd(insert,"写记录");//记录写入数据库的方法,这个主要是用于医生转科时的记录
}
/// <summary>
/// 保存错误信息日志
/// </summary>
/// <param name="ex"></param>
public static void WriteBuglog(Exception ex)
{
var logContent = string.Format("[{0}]错误发生在:{1},\r\n 内容:{2}",
DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), ex.Source, ex.Message);
logContent += string.Format("\r\n [{0}] 跟踪:{1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"),
ex.StackTrace);
SetFile(@"BugLog.txt", logContent);
}
#endregion
#region 通用操作
/// <summary>
/// 标准化写入过程,继承之后可自定义写入内容
/// 默认保存在debug目录的Log目录下
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="logContent">写入内容</param>
protected static void SetFile(string filename, string logContent)
{
Isexist(); // 判断Log目录是否存在
string errLogFilePath = Environment.CurrentDirectory + @"\Log\" + filename.Trim();
StreamWriter sw;
if (!File.Exists(errLogFilePath))
{
FileStream fs1 = new FileStream(errLogFilePath, FileMode.Create, FileAccess.Write);
sw = new StreamWriter(fs1);
}
else
{
sw = new StreamWriter(errLogFilePath, true);
}
sw.WriteLine(logContent);
sw.Flush();
sw.Close();
}
/// <summary>
/// 插入数据库记录的方法
/// </summary>
/// <param name="sqlstr"></param>
/// <param name="sqlname"></param>
public static void Csqlcmd(string sqlstr,string sqlname) //操作数据库的方法
{
try
{
SqlConnection myconn = new SqlConnection(Rcd);
SqlCommand cmd = new SqlCommand(sqlstr, myconn);
myconn.Open();
cmd.ExecuteNonQuery();
myconn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
//MessageBox.Show("数据库连接失败,请重试!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
// 判断是否存在日志文件
private static void Isexist()
{
string path = Environment.CurrentDirectory + @"\Log\";
if (!File.Exists(path))
{
Directory.CreateDirectory(path);
}
}
#endregion
}
调用
调用示例
Logging.Writelog("信息科小助手已启动");