在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
众所周知,日志是调试程序的有效途径,有一个好的日志代码,是一个程序小猿梦寐以求的。 以下是我结合网上资源自己总结的一小段代码,请笑纳: 转载请注明来源: http://www.cnblogs.com/benpao/p/3766644.html
using System.Text; public class Log { private static LogManager logManager; static Log() { logManager = new LogManager(); } public static void WriteLog(LogFile logFile, string msg) { try { logManager.WriteLog(logFile, msg); } catch { } } public static void WriteLog(string msg) { try { logManager.WriteLog(LogFile.Info, msg); } catch { } } public static void WriteLog(string logFile, string msg) { try { logManager.WriteLog(logFile, msg); } catch { } } } public class LogManager { private string logFileName = string.Empty; private string logPath = "Log"; private string logFileExtName = "log"; private bool writeLogTime = true; private bool logFileNameEndWithDate = true; private Encoding logFileEncoding = Encoding.UTF8; private object obj = new object(); #region 构造函数 public LogManager() { this.LogPath = "Log"; this.LogFileExtName = "log"; this.WriteLogTime = true; this.logFileNameEndWithDate = true; this.logFileEncoding = Encoding.UTF8; } public LogManager(string logPath, string logFileExtName, bool writeLogTime) { this.LogPath = logPath; this.LogFileExtName = logFileExtName; this.WriteLogTime = writeLogTime; this.logFileNameEndWithDate = true; this.logFileEncoding = Encoding.UTF8; } #endregion #region 属性 /// <summary> /// Log 文件路径 /// </summary> public string LogPath { get { if (this.logPath == null || this.logPath == string.Empty) { //Application.StartupPath this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyy-MM-dd")); } return this.logPath; } set { this.logPath = value; if (this.logPath == null || this.logPath == string.Empty) { //Application.StartupPath this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyy-MM-dd")); } else { try { // 判断是否不是绝对路径(绝对路径里还有":") if (this.logPath.IndexOf(Path.VolumeSeparatorChar) >= 0) { /* 绝对路径 */} else { // 相对路径 this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory + this.logPath, DateTime.Now.ToString("yyyy-MM-dd")); } if (!Directory.Exists(this.logPath)) Directory.CreateDirectory(this.logPath); } catch { this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyy-MM-dd")); } if (!this.logPath.EndsWith(@"\")) this.logPath += @"\"; } } } /// <summary> /// Log 文件扩展名 /// </summary> public string LogFileExtName { get { return this.logFileExtName; } set { this.logFileExtName = value; } } /// <summary> /// 是否在每个Log行前面添加当前时间 /// </summary> public bool WriteLogTime { get { return this.writeLogTime; } set { this.writeLogTime = value; } } /// <summary> /// 日志文件名是否带日期 /// </summary> public bool LogFileNameEndWithDate { get { return logFileNameEndWithDate; } set { logFileNameEndWithDate = value; } } /// <summary> /// 日志文件的字符编码 /// </summary> public Encoding LogFileEncoding { get { return logFileEncoding; } set { logFileEncoding = value; } } #endregion #region 公有方法 public void WriteLog(string logFile, string msg) { lock (obj) { try { string dateString = string.Empty; if (this.logFileNameEndWithDate || logFile.Length == 0) { dateString = DateTime.Now.ToString("yyyyMMdd"); } logFileName = string.Format("{0}{1}{2}.{3}", this.LogPath, logFile, dateString, this.logFileExtName); using (StreamWriter sw = new StreamWriter(logFileName, true, logFileEncoding)) { if (writeLogTime) { sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss: ") + msg); } else { sw.WriteLine(msg); } } } catch { } } } public void WriteLog(LogFile logFile, string msg) { this.WriteLog(logFile.ToString(), msg); } public void WriteLog(string msg) { this.WriteLog(string.Empty, msg); } #endregion } public enum LogFile { Trace, Error, SQL, SQLError, Login, Info, WeChat }
码农都是有尊严的 转载请注明来源,谢谢 http://www.cnblogs.com/benpao/ |
请发表评论