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);
}
}
}