在MVC专案下建立Log类别
public class LogWriter{ /// <summary>路径</summary> private static string Path = "C:\\LogFile"; /// <summary>档案名称</summary> private static string Name = "Log"; /// <summary> /// 设定路径和名称 /// </summary> /// <param name="NewPath">路径</param> /// <param name="NewName">名称</param> public static void SetPathAndName(string NewPath, string NewName) { Path = NewPath; Name = NewName; } /// <summary> /// 产生Log档 /// </summary> public static void CreateLogger() { //如果此路径没有资料夹 if (!Directory.Exists(Path)) { //新增资料夹 Directory.CreateDirectory(Path); } WriteLog("======================================="); WriteLog("程式启动 : " + DateTime.Now.ToString()); WriteLog("======================================="); } /// <summary> /// 写入Log /// </summary> /// <param name="log">Log内容</param> public static void WriteLog(string log) { if (!Directory.Exists(Path)) CreateLogger(); using (StreamWriter sw = File.AppendText(Path + "\\" + Name)) sw.WriteLine(log); } /// <summary> /// 写入Log /// </summary> /// <param name="LogType">Log类别</param> /// <param name="ClassName">使用GetType的Name或FullName</param> /// <param name="MethodName">使用MethodBase.GetCurrentMethod</param> /// <param name="Message">Log内容</param> /// <returns></returns> public static void WriteLog(ELogType LogType, string ClassName, string MethodName, string Message) { if (!Directory.Exists(Path)) CreateLogger(); using (StreamWriter sw = File.AppendText(Path + "\\" + Name)){ sw.WriteLine($"[{LogType}] {Regex.Replace(ClassName, "Controller", string.Empty)}[{MethodName}] {Message}"); } }}
建立Log用Enum
public class ConstEnum{ /// <summary>Log列举</summary> public enum ELogType { /// <summary>资讯</summary> INFO, /// <summary>警告</summary> WARN, /// <summary>错误</summary> ERROR }}
在应用程式开始和结束的地方加入
namespace WebProjectName{ /// <summary>执行端</summary> public class MvcApplication : System.Web.HttpApplication { /// <summary>应用程式开始</summary> protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); //加入路由 RouteConfig.RegisterRoutes(RouteTable.Routes); //封装JS和CSS档 BundleConfig.RegisterBundles(BundleTable.Bundles); //启动Log记录 LogWriter.SetPathAndName("C:\\LogFile", "Log"); LogWriter.CreateLogger(); } /// <summary>应用程式结束</summary> protected void Application_End() { LogWriter.WriteLog("======================================="); LogWriter.WriteLog("程式结束Application_End : " + DateTime.Now.ToString()); LogWriter.WriteLog("======================================="); } /// <summary>程式出错</summary> protected void Application_Error() { Exception ErrorMsg = Server.GetLastError(); LogWriter.WriteLog($"[Application_Error] Exception:{ErrorMsg.GetType().Name}({ErrorMsg.Message}) \nSource:{ErrorMsg.Source} \nStackTrace:{ErrorMsg.StackTrace}"); } }}
使用方式
LogWriter.WriteLog(ELogType.INFO, GetType().Name, MethodBase.GetCurrentMethod().Name, "讯息");