Log.cs (这个已经不能用了,用下面的问题解决方案)
using System; using System.Collections.Generic; using System.Web; using System.IO; namespace PC.Common { public class Log { //在网站根目录下创建日志目录 public static string path = HttpContext.Current.Request.PhysicalApplicationPath + "logs"; /** * 向日志文件写入调试信息 * @param className 类名 * @param content 写入内容 */ public static void Debug(string className, string content) { if (LogLevel.LOG_LEVENL >= 3) { WriteLog("DEBUG", className, content); } } /** * 向日志文件写入运行时信息 * @param className 类名 * @param content 写入内容 */ public static void Info(string className, string content) { if (LogLevel.LOG_LEVENL >= 2) { WriteLog("INFO", className, content); } } /** * 向日志文件写入出错信息 * @param className 类名 * @param content 写入内容 */ public static void Error(string className, string content) { if (LogLevel.LOG_LEVENL >= 1) { WriteLog("ERROR", className, content); } } /** * 实际的写日志操作 * @param type 日志记录类型 * @param className 类名 * @param content 写入内容 */ protected static void WriteLog(string type, string className, string content) { if (!Directory.Exists(path))//如果日志目录不存在就创建 { Directory.CreateDirectory(path); } string time = DateTime.Now.ToString("HH:mm:ss.fff");//获取当前系统时间 string filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";//用日期对日志文件命名 //创建或打开日志文件,向日志文件末尾追加记录 StreamWriter mySw = File.AppendText(filename); DateTime now = DateTime.Now; if (now.Hour > 0 && now.Hour < 8) { //向日志文件写入内容 string write_content = "「凌晨」" + time + " " + type + " " + className + ": " + content; mySw.WriteLine(write_content); } else if (now.Hour > 8 && now.Hour < 12) { //向日志文件写入内容 string write_content = "【上午】" + time + " " + type + " " + className + ": " + content; mySw.WriteLine(write_content); } else if (now.Hour > 12 && now.Hour < 18) { //向日志文件写入内容 string write_content = "『下午』" + time + " " + type + " " + className + ": " + content; mySw.WriteLine(write_content); } else if (now.Hour > 18 && now.Hour < 24) { //向日志文件写入内容 string write_content = "〖晚上〗" + time + " " + type + " " + className + ": " + content; mySw.WriteLine(write_content); } //关闭日志文件 mySw.Close(); } } }
LogLevel.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace PC.Common { public class LogLevel { public static string AppKey(string key) { return System.Configuration.ConfigurationManager.AppSettings[key]; } /// <summary> /// 日志等级,0.不输出日志;1.只输出错误信息; 2.输出错误和正常信息; 3.输出错误信息、正常信息和调试信息 /// </summary> public static int LOG_LEVENL { get { string log_levenl = "0"; if (AppKey("log_leven") != "") { log_levenl = AppKey("log_leven"); } return Convert.ToInt32(log_levenl); } } } }
web.config
调用方式
Log.Debug(this.GetType().ToString(), "json : " + json);
问题:正由另一进程使用,因此该进程无法访问该文件
log.cs 更改
using System; using System.Collections.Generic; using System.Web; using System.IO; using System.Text; namespace PC.Common { public class Log { //在网站根目录下创建日志目录 //public static string path = HttpContext.Current.Request.PhysicalApplicationPath + "logs"; public static string path = System.AppDomain.CurrentDomain.BaseDirectory + "logs"; /** * 向日志文件写入调试信息 * @param className 类名 * @param content 写入内容 * @param remark 备注 */ public static void MostDebug(string className, string content, string remark) { if (LogLevel.LOG_LEVENL >= 4) { WriteLog("MostDebug", className, content, remark); } } /** * 向日志文件写入调试信息 * @param className 类名 * @param content 写入内容 * @param remark 备注 */ public static void Debug(string className, string content, string remark) { if (LogLevel.LOG_LEVENL >= 3) { WriteLog("DEBUG", className, content, remark); } } /** * 向日志文件写入运行时信息 * @param className 类名 * @param content 写入内容 * @param remark 备注 */ public static void Info(string className, string content, string remark) { if (LogLevel.LOG_LEVENL >= 2) { WriteLog("INFO", className, content, remark); } } /** * 向日志文件写入出错信息 * @param className 类名 * @param content 写入内容 * @param remark 备注 */ public static void Error(string className, string content, string remark) { if (LogLevel.LOG_LEVENL >= 1) { WriteLog("ERROR", className, content, remark); } } /** * 实际的写日志操作 * @param type 日志记录类型 * @param className 类名 * @param content 写入内容 * @param remark 备注 */ protected static void WriteLog(string type, string className, string content, string remark) { //用户浏览器标识 //string agent = HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"] == null ? "后端调用" : HttpContext.Current.Request.ServerVariables["HTTP_USER_AGENT"].ToString(); if (!Directory.Exists(path))//如果日志目录不存在就创建 { Directory.CreateDirectory(path); } string time = DateTime.Now.ToString("HH:mm:ss.fff");//获取当前系统时间 string filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".log";//用日期对日志文件命名 if (!File.Exists(filename)) { File.Create(filename).Close(); } //解决【正由另一进程使用,因此该进程无法访问该文件】 using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) { DateTime now = DateTime.Now; string write_content = "[" + time + "]【" + type + "】" + remark + " (" + className + "): " + content;//+ "(" + agent + ")"; byte[] bytes = null; if (now.Hour >= 0 && now.Hour < 8) { //向日志文件写入内容 write_content = "「凌晨」" + write_content; bytes = Encoding.Default.GetBytes(write_content); } else if (now.Hour >= 8 && now.Hour < 12) { //向日志文件写入内容 write_content = "【上午】" + write_content; bytes = Encoding.Default.GetBytes(write_content); } else if (now.Hour >= 12 && now.Hour < 18) { //向日志文件写入内容 write_content = "『下午』" + write_content; bytes = Encoding.Default.GetBytes(write_content); } else if (now.Hour >= 18 && now.Hour < 24) { //向日志文件写入内容 write_content = "〖晚上〗" + write_content; bytes = Encoding.Default.GetBytes(write_content); } //2、写操作 fs.Position = fs.Length; fs.Write(bytes, 0, bytes.Length); //byte(13) byte(10)等效于 ,直接输入 不起作用 fs.WriteByte(13); fs.WriteByte(10); fs.Flush();//清空流 } } } } ////创建或打开日志文件,向日志文件末尾追加记录 //StreamWriter mySw = File.AppendText(filename); //DateTime now = DateTime.Now; //string write_content = "[" + time + "]【" + type + "】" + remark + " (" + className + "): " + content;//+ "(" + agent + ")"; //if (now.Hour >= 0 && now.Hour < 8) //{ // //向日志文件写入内容 // write_content = "「凌晨」" + write_content; // mySw.WriteLine(write_content); //} //else if (now.Hour >= 8 && now.Hour < 12) //{ // //向日志文件写入内容 // write_content = "【上午】" + write_content; // mySw.WriteLine(write_content); //} //else if (now.Hour >= 12 && now.Hour < 18) //{ // //向日志文件写入内容 // write_content = "『下午』" + write_content; // mySw.WriteLine(write_content); //} //else if (now.Hour >= 18 && now.Hour < 24) //{ // //向日志文件写入内容 // write_content = "〖晚上〗" + write_content; // mySw.WriteLine(write_content); //} ////关闭日志文件 //mySw.Close();