ServerLoggerEngine.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System.Diagnostics;
  2. using Serilog;
  3. using WingServerCommon.Config;
  4. using WingServerCommon.Config.Parameters;
  5. namespace WingServerCommon.Log
  6. {
  7. public class ServerLoggerEngine : ILogEngine
  8. {
  9. private Serilog.Core.Logger _logger;
  10. private static string _server = ConfigurationManager.GetParammeter<StringParameter>("Database", "Server").Value;
  11. private static int _port = ConfigurationManager.GetParammeter<IntParameter>("Database", "Port").Value;
  12. private static bool _debugMode = ConfigurationManager.GetParammeter<BoolParameter>("Log", "Debug").Value;
  13. public ServerLoggerEngine()
  14. {
  15. var settings = ConfigurationManager.LogSettings;
  16. if (_debugMode)
  17. {
  18. _logger = new LoggerConfiguration()
  19. .MinimumLevel.Debug()
  20. .MinimumLevel.Verbose()
  21. .WriteTo.MongoDB($"mongodb://{_server}:{_port}/WingCloudLogs", batchPostingLimit: 1000)
  22. .WriteTo.Console()
  23. .CreateLogger();
  24. }
  25. else
  26. {
  27. _logger = new LoggerConfiguration()
  28. .MinimumLevel.Debug()
  29. .MinimumLevel.Verbose()
  30. .WriteTo.MongoDB($"mongodb://{_server}:{_port}/WingCloudLogs", batchPostingLimit: 1000)
  31. .CreateLogger();
  32. }
  33. }
  34. /// <summary>
  35. /// Write the log
  36. /// </summary>
  37. /// <param name="level">Log's level see <see cref="TraceLevel"/></param>
  38. /// <param name="msg">The message to write</param>
  39. public void Write(TraceLevel level, string msg)
  40. {
  41. var threadId = Thread.CurrentThread.ManagedThreadId;
  42. var log = $"Thead({threadId})-{msg}";
  43. switch (level)
  44. {
  45. case TraceLevel.Error:
  46. _logger.Error(log);
  47. break;
  48. case TraceLevel.Warning:
  49. _logger.Warning(log);
  50. break;
  51. case TraceLevel.Info:
  52. _logger.Information(log);
  53. break;
  54. case TraceLevel.Verbose:
  55. _logger.Verbose(log);
  56. break;
  57. case TraceLevel.Off:
  58. _logger.Debug(log);
  59. break;
  60. }
  61. }
  62. }
  63. }