using System; using System.Collections.Generic; using System.Web; using System.IO; using System.Runtime.CompilerServices; using HH.WMS.Common.External; namespace HH.WMS.Common { public class Log { //在网站根目录下创建日志目录 /** * 向日志文件写入调试信息 * @param className 类名 * @param content 写入内容 */ public static void Debug(string className, string content) { WriteLog("DEBUG", className, content); } /** * 向日志文件写入调试信息 * @param className 类名 * @param content 写入内容 */ public static void AlgorDebug(string className, string content) { WriteAlgorLog("DEBUG", className, content); } /** * 向日志文件写入运行时信息 * @param className 类名 * @param content 写入内容 */ public static void Info(string className, string content) { WriteLog("INFO", className, content); } /** * 向日志文件写入运行时信息 * @param className 类名 * @param content 写入内容 */ public static void AlgorInfo(string className, string content) { WriteAlgorLog("INFO", className, content); } /// /// 在global里面调用的方法里使用 /// /// /// public static void DomainInfo(string className, string content) { WriteDomainLog("INFO", className, content); } /** * 向日志文件写入出错信息 * @param className 类名 * @param content 写入内容 */ public static void Error(string className, string content) { WriteLog("ERROR", className, content); } protected static void WriteDomainLog(string type, string className, string content) { string path = AppDomain.CurrentDomain.BaseDirectory + "/logs"; // string.Empty; if (!Directory.Exists(path))//如果日志目录不存在就创建 { Directory.CreateDirectory(path); } string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");//获取当前系统时间 string filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";//用日期对日志文件命名 lock (fileLock) { //创建或打开日志文件,向日志文件末尾追加记录 StreamWriter mySw = File.AppendText(filename); //向日志文件写入内容 string write_content = time + " " + type + " " + className + ": " + content; mySw.WriteLine(write_content); ////关闭日志文件 mySw.Close(); } } /** * 实际的写日志操作 * @param type 日志记录类型 * @param className 类名 * @param content 写入内容 */ private static object fileLock = new object(); protected static void WriteLog(string type, string className, string content) { string path = string.Empty; //HttpContext context = HttpContext.Current; //if (context != null) //{ // //Web // path = HttpContext.Current.Request.PhysicalApplicationPath + "/logs"; //} //else //{ // //Win // try // { // path = System.Windows.Forms.Application.StartupPath + "/logs"; // } // catch (Exception ex) // { // path = ""; // } //} path = AppDomain.CurrentDomain.BaseDirectory + "/logs"; if (string.IsNullOrEmpty(path)) { string logUrl = System.Configuration.ConfigurationManager.AppSettings["PrintLogUrl"].ToString(); if (!string.IsNullOrEmpty(logUrl)) path = logUrl + "/logs"; else path = "C:/logs"; } if (!Directory.Exists(path))//如果日志目录不存在就创建 { Directory.CreateDirectory(path); } string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");//获取当前系统时间 string filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + type + ".log";//用日期对日志文件命名 lock (fileLock) { //创建或打开日志文件,向日志文件末尾追加记录 StreamWriter mySw = File.AppendText(filename); //向日志文件写入内容 string write_content = time + " " + type + " " + className + ": " + content; mySw.WriteLine(write_content); ////关闭日志文件 mySw.Close(); } } protected static void WriteAlgorLog(string type, string className, string content) { try { string printLog = ""; string path = string.Empty; HttpContext context = HttpContext.Current; if (context != null) { //Web path = HttpContext.Current.Request.PhysicalApplicationPath + "/Algorlogs"; printLog = System.Configuration.ConfigurationManager.AppSettings["PrintAlgorLog"].ToString(); } else { //Win //path = System.Windows.Forms.Application.StartupPath + "/Algorlogs"; printLog = System.Configuration.ConfigurationManager.AppSettings["PrintAlgorLog"].ToString(); } if (printLog == "N") { return; } if (!Directory.Exists(path))//如果日志目录不存在就创建 { Directory.CreateDirectory(path); } string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");//获取当前系统时间 string filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";//用日期对日志文件命名 lock (fileLock) { //创建或打开日志文件,向日志文件末尾追加记录 StreamWriter mySw = File.AppendText(filename); //向日志文件写入内容 string write_content = time + " " + type + " " + className + ": " + content; mySw.WriteLine(write_content); ////关闭日志文件 mySw.Close(); } } catch (Exception ex) { //SysLog.Log(ex, SysLog.LogType.CodeException); } } public static void Detail(string title, string content) { WriteLog("DETAIL", title, content); } public static void Detail(LogPara logPara, string content) { logPara.logPara.Push(content); logPara.LogIndex++; WriteLog("DETAIL", logPara.LogType + logPara.LogIndex, content); } public static int LogIndex = 0; public static string LogTitle = ""; public static void InfoNo(string content) { LogIndex++; Info(LogTitle + LogIndex, content); } public static void InfoNo(string title, string content) { LogIndex = 0; LogTitle = title; InfoNo(content); } public static void InfoNo(int index, string title, string content) { LogIndex = index; LogTitle = title; InfoNo(content); } } }