You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Logger.cs 2.2 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using Microsoft.Extensions.Logging;
  3. using Serilog;
  4. public sealed class Logger
  5. {
  6. private static readonly Lazy<Logger> _instance = new Lazy<Logger>(() => new Logger());
  7. private static ILoggerFactory _loggerFactory;
  8. private static readonly object _lock = new object();
  9. public static Logger Default => _instance.Value;
  10. private Logger()
  11. {
  12. var logConfig = new LoggerConfiguration()
  13. .MinimumLevel.Verbose()
  14. .WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {Message}{NewLine}{Exception}");
  15. _loggerFactory = LoggerFactory.Create(builder =>
  16. {
  17. builder.AddSerilog(logConfig.CreateLogger(), dispose: true);
  18. });
  19. }
  20. public void ToConsole()
  21. {
  22. // 不需要处理,Serilog 默认就输出到控制台
  23. }
  24. public void ToFile(string filename)
  25. {
  26. var logConfig = new LoggerConfiguration()
  27. .MinimumLevel.Verbose()
  28. .WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {Message}{NewLine}{Exception}")
  29. .WriteTo.File(filename, outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {Message}{NewLine}{Exception}");
  30. lock (_lock)
  31. {
  32. _loggerFactory.Dispose();
  33. _loggerFactory = LoggerFactory.Create(builder =>
  34. {
  35. builder.AddSerilog(logConfig.CreateLogger(), dispose: true);
  36. });
  37. }
  38. }
  39. public void Info(string message)
  40. {
  41. _loggerFactory.CreateLogger<Logger>().LogInformation(message);
  42. Console.ForegroundColor = ConsoleColor.White;
  43. Console.WriteLine(message);
  44. Console.ResetColor();
  45. }
  46. public void Warn(string message)
  47. {
  48. _loggerFactory.CreateLogger<Logger>().LogWarning(message);
  49. Console.ForegroundColor = ConsoleColor.Yellow;
  50. Console.WriteLine(message);
  51. Console.ResetColor();
  52. }
  53. public void Error(string message)
  54. {
  55. _loggerFactory.CreateLogger<Logger>().LogError(message);
  56. Console.ForegroundColor = ConsoleColor.Red;
  57. Console.WriteLine(message);
  58. Console.ResetColor();
  59. }
  60. }

C#/.NET上易用的LLM高性能推理框架,支持LLaMA和LLaVA系列模型。