日志记录类

前言

在程序的操作过程中,对于删除和修改的操作,最好还是有个记录,这样即使出了错,也好查找弥补,所以写一个日志记录的类是很有必要的。

 /// <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("信息科小助手已启动");
posted @ 2016-04-25 11:25  lovedanr  阅读(187)  评论(0编辑  收藏  举报