日志的记录是将程序过程中的一些行为数据记录下来,方便开发、运维迅速的找到问题的所在,节省时间。使用时在
站点的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 ");