SimpleLogger.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. using SWRIS.Core;
  2. using System;
  3. using System.Globalization;
  4. using System.IO;
  5. using System.Text;
  6. using System.Threading;
  7. namespace SWRIS.Extensions
  8. {
  9. public class SimpleLogger
  10. {
  11. private string GetFilePath()
  12. {
  13. if (DateTime.Now.Date > LastDate.Date)
  14. {
  15. FileIndex = 1;
  16. }
  17. LogPath = (LogPath.EndsWith("\\") ? LogPath.Substring(0, LogPath.Length - 1) : LogPath);
  18. string text = string.Format("{0}\\{1}\\{2}{3}.log", new object[]
  19. {
  20. LogPath,
  21. DateTime.Now.ToString("yyyy-MM-dd"),
  22. FileName,
  23. FileIndex
  24. });
  25. if (!File.Exists(text))
  26. {
  27. FileHelper.CreateFile(text, string.Empty);
  28. }
  29. string result;
  30. if (GetFileSize(text) > MaxSize)
  31. {
  32. FileIndex++;
  33. result = GetFilePath();
  34. }
  35. else
  36. {
  37. LastDate = DateTime.Now;
  38. result = text;
  39. }
  40. return result;
  41. }
  42. private long GetFileSize(string filePath)
  43. {
  44. return new FileInfo(filePath).Length / 1024L;
  45. }
  46. private void Write(string text)
  47. {
  48. if (IsAsyn)
  49. {
  50. AsynWriteLog(text);
  51. }
  52. else
  53. {
  54. WriteLog(text);
  55. }
  56. }
  57. private void WriteLog(string text)
  58. {
  59. try
  60. {
  61. string filePath = GetFilePath();
  62. using (StreamWriter streamWriter = new StreamWriter(filePath, true))
  63. {
  64. streamWriter.WriteLine(text);
  65. streamWriter.Flush();
  66. }
  67. }
  68. catch
  69. {
  70. }
  71. }
  72. private void AsynWriteLog(string value)
  73. {
  74. ThreadPool.QueueUserWorkItem(delegate (object obj)
  75. {
  76. try
  77. {
  78. WriteLog(value);
  79. }
  80. catch (Exception ex)
  81. {
  82. LogHelper.Error(ex.Message, ex);
  83. }
  84. });
  85. }
  86. private string LogFormat(string content, string logLevel, Exception exception)
  87. {
  88. StringBuilder stringBuilder = new StringBuilder();
  89. stringBuilder.Append(Environment.NewLine);
  90. stringBuilder.AppendLine("//==========================================================================================================");
  91. stringBuilder.AppendFormat("系统时间:{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
  92. stringBuilder.Append(" ");
  93. stringBuilder.AppendFormat("当前线程ID:{0}", Thread.CurrentThread.ManagedThreadId);
  94. stringBuilder.Append(Environment.NewLine);
  95. stringBuilder.AppendFormat("日志等级:{0}", logLevel);
  96. stringBuilder.Append(Environment.NewLine);
  97. stringBuilder.AppendFormat("日志内容:{0}", content);
  98. if (exception != null)
  99. {
  100. stringBuilder.Append(Environment.NewLine);
  101. stringBuilder.AppendLine("异常信息:");
  102. stringBuilder.Append(exception.ToLogString());
  103. }
  104. return stringBuilder.ToString();
  105. }
  106. [Obsolete("记录消息,无任何格式处理,记录系统日志请勿使用该功能")]
  107. public void LogMessage(string content)
  108. {
  109. try
  110. {
  111. string filePath = GetFilePath();
  112. using (StreamWriter streamWriter = new StreamWriter(filePath, true))
  113. {
  114. streamWriter.WriteLine(content);
  115. streamWriter.Flush();
  116. }
  117. }
  118. catch
  119. {
  120. }
  121. }
  122. [Obsolete("删除传入日期前一天的日志信息")]
  123. public void DeleteLog(DateTime dateTime)
  124. {
  125. try
  126. {
  127. LogPath = (LogPath.EndsWith("\\") ? LogPath.Substring(0, LogPath.Length - 1) : LogPath);
  128. string text = string.Format("{0}\\{1}", new object[]
  129. {
  130. LogPath,
  131. dateTime.AddDays(-1).ToString("yyyy-MM-dd")
  132. });
  133. if (Directory.Exists(text))
  134. {
  135. Directory.Delete(text, true);
  136. }
  137. }
  138. catch
  139. {
  140. }
  141. }
  142. public void Log(string content, string level, Exception ex)
  143. {
  144. #if Debug
  145. Console.WriteLine(content);
  146. #endif
  147. string text = LogFormat(content, level, ex);
  148. Write(text);
  149. }
  150. public int MaxSize = 2048;
  151. public string LogPath = FileHelper.GetPhysicalPath("Log");
  152. public string FileName = "Log";
  153. public bool IsAsyn = true;
  154. private int FileIndex = 1;
  155. private DateTime LastDate = DateTime.Now;
  156. }
  157. }