C#通用类库整理--日志记录

   日志的记录是将程序过程中的一些行为数据记录下来,方便开发、运维迅速的找到问题的所在,节省时间。使用时在

站点的web.config 中的<appSettings></appSettings>节点中增加:

 

  <!-- 日志路径 -->

  <add key="LogDirectory" value="E:\TextLog" />

 

  <!-- 日志名称 -->

 

  <add key="ProgramName" value="日志记入类" />

private static string LogDirectory = ConfigurationManager.AppSettings["LogDirectory"];
        private static string programName = ConfigurationManager.AppSettings["ProgramName"];
        /// <summary>
        /// 是否入库 web.config配置 UniteLogStart
        /// </summary>
        //private static string isInLog = ConfigurationManager.AppSettings["UniteLogStart"];
        private static string isInLog;
        public LogProxy()
        {


        }


        /// <summary>
        /// 重载功能操作日志入库
        /// </summary>
        /// <param name="text">错误信息</param>
        /// <param name="userid">用户名</param>
        /// <param name="scode">功能id</param>
        public static void Write(string text, string userid, string scode, Database m_DataBase)
        {
            try
            {
                if (isInLog != null || isInLog == "1")//是否入库
                {
                    //插入该操作
                    string tmpSQL = String.Format("insert into SYS_USER_LOG(USER_ID,CLIENT_IP,BUSINESS_NAME,BUSINESS_ID,IS_SUCCESS) values('{0}','{1}',F_GET_BUSINESSNAME('{2}'),'{2}','1')", userid, HttpContext.Current.Request.UserHostAddress, scode);
                    m_DataBase.ExecuteNonQuery(m_DataBase.GetSqlStringCommand(tmpSQL));
                }
            }
            catch (Exception e)
            {
                WriteExp("操作日志插入错误:" + e.Message);
            }

            string directory = GetFullDirectory();
            string fileName = Thread.CurrentThread.Name + ".log";
            LogWriter.Writer(directory, fileName, text);

        }
        /// <summary>
        /// 重载是否错误日志入库
        /// </summary>
        /// <param name="text">错误信息</param>
        /// <param name="userid">用户名</param>
        /// <param name="scode">功能id</param>
        public static void WriteExp(string text, string userid, string scode, Database m_DataBase)
        {

            try
            {
                if (isInLog != null || isInLog == "1")//是否入库
                {
                    //插入该操作
                    string tmpSQL = String.Format("insert into SYS_USER_LOG(USER_ID,CLIENT_IP,BUSINESS_NAME,BUSINESS_ID,IS_SUCCESS,FAILURE_EXCEPTION) values('{0}','{1}',F_GET_BUSINESSNAME('{2}'),'{2}','1','{3}')", userid, HttpContext.Current.Request.UserHostAddress, scode, text);
                    m_DataBase.ExecuteNonQuery(m_DataBase.GetSqlStringCommand(tmpSQL));
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
            string directory = GetFullDirectory();
            string fileName = Thread.CurrentThread.Name + "_Exp.log";
            LogWriter.Writer(directory, fileName, text);
        }

        /// <summary>
        /// 针对多线程的应用程序写日志
        /// </summary>
        /// <param name="text"></param>
        public static void Write(string text)
        {
            string directory = GetFullDirectory();
            string fileName = Thread.CurrentThread.Name + ".log";
            LogWriter.Writer(directory, fileName, text);

        }
        public static void WriteExp(string text)
        {
            string directory = GetFullDirectory();
            string fileName = Thread.CurrentThread.Name + "_Exp.log";
            LogWriter.Writer(directory, fileName, text);
        }
        public static void WriteDug(string text)
        {
            string directory = GetFullDirectory();
            string fileName = Thread.CurrentThread.Name + "_Dug.log";
            LogWriter.Writer(directory, fileName, text);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="e"></param>
        public static void WriteExp(System.Exception e)
        {
            WriteExp(e.Message + "\r\n" + e.StackTrace);
        }
        public static void WriteTest(string text)
        {
            string directory = GetFullDirectory();
            string fileName = Thread.CurrentThread.Name + "_test.log";
            LogWriter.Writer(directory, fileName, text);
        }
        public static void WriteKeeper(string text, string keepersn)
        {
            string directory = GetFullDirectory();
            string fileName = keepersn + ".log";
            LogWriter.Writer(directory, fileName, text);
        }

        /// <summary>
        /// 针对单线程的应用程序写日志
        /// </summary>
        /// <param name="text"></param>
        public static void STWrite(string text)
        {
            string directory = GetFullDirectory();
            string fileName = programName + ".log";
            LogWriter.Writer(directory, fileName, text);
        }
        public static void STWriteExp(string text)
        {
            string directory = GetFullDirectory();
            string fileName = programName + "_Exp.log";
            LogWriter.Writer(directory, fileName, text);
        }
        public static void STWrite(string filePrefixName, string text)
        {
            string directory = GetFullDirectory();
            string fileName = filePrefixName + ".log";
            LogWriter.Writer(directory, fileName, text);
        }
        public static void STWriteExp(string filePrefixName, string text)
        {
            string directory = GetFullDirectory();
            string fileName = filePrefixName + "_Exp.log";
            LogWriter.Writer(directory, fileName, text);
        }

        private static string GetFullDirectory()
        {
            return LogDirectory + "\\"
                + DateTime.Now.ToString("yyyy-MM") + "\\" + DateTime.Now.Day.ToString()
                + "\\" + programName;
        }
 internal class LogWriter
    {

        public LogWriter()
        {

        }

        [MethodImpl(MethodImplOptions.Synchronized)]
        public static void Writer(string directory, string fileName, string text)
        {
            CheckDirectory(directory);
            using (StreamWriter sw = new StreamWriter(directory + "\\" + fileName, true, Encoding.UTF8))
            {
                sw.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss "));
                sw.WriteLine(" " + text);
                sw.WriteLine("-------------------------------------------");
            }
        }
        private static void CheckDirectory(string directory)
        {
            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }
        }
    }

以上是两个类库的代码。在程序中使用:

 LogProxy.WriteExp("Come in ");

 

 

转载于:https://www.cnblogs.com/wangchao1990/p/7200399.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值