Logger.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. using System.Threading.Tasks;
  5. namespace EthermineBotTelegramCore
  6. {
  7. public static class Logger
  8. {
  9. private static string fullLogPath = AppSettings.fullLogPath;
  10. private static string errorLogPath = AppSettings.errorLogPath;
  11. static FileStream fullLog = new FileStream(fullLogPath, FileMode.OpenOrCreate,
  12. FileAccess.Write,
  13. FileShare.None, 4096,
  14. FileOptions.Asynchronous | FileOptions.SequentialScan);
  15. static FileStream errLog = new FileStream(errorLogPath, FileMode.OpenOrCreate,
  16. FileAccess.Write,
  17. FileShare.None, 4096,
  18. FileOptions.Asynchronous | FileOptions.SequentialScan);
  19. static Logger()
  20. {
  21. fullLog.Seek(0,SeekOrigin.End);
  22. errLog.Seek(0,SeekOrigin.End);
  23. }
  24. public async static Task LogInfo(string message)
  25. {
  26. message = $"{DateTime.Now.ToLocalTime().ToString("[MM-dd-yyyy HH:mm:ss]")} INFO {message} \n";
  27. byte[] logLine = Encoding.Unicode.GetBytes(message);
  28. await fullLog.WriteAsync(logLine, 0, logLine.Length);
  29. await fullLog.FlushAsync();
  30. }
  31. public async static Task LogWarn(string message)
  32. {
  33. message = $"{DateTime.Now.ToLocalTime().ToString("[MM-dd-yyyy HH:mm:ss]")} WARNING {message} \n";
  34. byte[] logLine = Encoding.Unicode.GetBytes(message);
  35. await fullLog.WriteAsync(logLine, 0, logLine.Length);
  36. await fullLog.FlushAsync();
  37. }
  38. public async static Task LogError(string message)
  39. {
  40. message = $"{DateTime.Now.ToLocalTime().ToString("[MM-dd-yyyy HH:mm:ss]")} ERROR {message} \n";
  41. byte[] logLine = Encoding.Unicode.GetBytes(message);
  42. await fullLog.WriteAsync(logLine, 0, logLine.Length);
  43. await errLog.WriteAsync(logLine, 0, logLine.Length);
  44. await fullLog.FlushAsync();
  45. await errLog.FlushAsync();
  46. }
  47. public async static Task LogDebug(string message)
  48. {
  49. message = $"{DateTime.Now.ToLocalTime().ToString("[MM-dd-yyyy HH:mm:ss]")} DEBUG {message} \n";
  50. byte[] logLine = Encoding.Unicode.GetBytes(message);
  51. await fullLog.WriteAsync(logLine, 0, logLine.Length);
  52. await fullLog.FlushAsync();
  53. }
  54. public static void Stop()
  55. {
  56. fullLog.Close();
  57. errLog.Close();
  58. }
  59. public async static Task Save()
  60. {
  61. await fullLog.FlushAsync();
  62. await errLog.FlushAsync();
  63. }
  64. }
  65. }