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

时间:2023-03-09 16:10:07
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 == "")//是否入库
{
//插入该操作
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 == "")//是否入库
{
//插入该操作
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 ");