介绍

框架默认实现了一个简单的文件日志记录器,如果需要功能强大的日志组件,请使用NLog组件。使用相对简单,具体用法请参考官网,对于常规应用来说,框架自带的日志组件已经够用。

配置

在框架配置文件app.json中添加日志配置内容

  1. {
  2. "Log": {
  3. //日志输出级别:debug(调试) info(消息) warn(警告) error(错误) none(不输出)
  4. "Level": "info",
  5. //消息模板 {CallClass},调用所在类 {CallMethod} 调用所在方法 {LogLevel} 日志级别 {CreateDateTime} 创建日期 {Tag} 标签 {Message} 日志消息
  6. "MessageTemplate": "{CallClass}.{CallMethod} {LogLevel} {CreateDateTime} {Tag} {Message}",
  7. //日志输出目录,默认为根目录下的Log目录(基于日期掩码)({root}软件输出根目录)
  8. "Dir": "{root}\\Log\\{yyyy-MM}",
  9. //日志文件名(基于日期掩码),不含扩展名
  10. "FileName": "{yyyy-MM-dd}",
  11. //文件大小限制,单位为K0表示不限制,默认:200M204800KB),文件大小超过此大小时,文件会新建。
  12. "FileSizeLimit": 204800,
  13. //是否自动删除历史文件
  14. "AutoDelete": true,
  15. //自动删除多久之前的日志文件,默认:30
  16. "AutoDeleteTimeSpan": "30.00:00:00",
  17. //过期文件轮询时间间隔,默认:1小时
  18. "AutoDeleteInterval": "01:00:00",
  19. //队列缓冲区大小,默认:10
  20. "QueueBufferSize": 1000000,
  21. //文件写入缓冲区大小,默认:2000(如果写入文件缓冲区超过此值,则开始写入文件)
  22. "WriteBufferSize": 2000,
  23. //文件写入间隔时间,默认:10秒(如果文件写入缓冲区未满,达到此时间时把文件写入缓存区的数据写入文件)
  24. "WriteInterval": "00:00:10",
  25. }
  26. }

配置项

  1. using System;
  2. namespace XCI.Logger
  3. {
  4. /// <summary>
  5. /// 文件日志配置
  6. /// </summary>
  7. public class FileLoggerConfig
  8. {
  9. /// <summary>
  10. /// 日志输出级别,默认是Info(消息)级别。
  11. /// 打印次序:Debug(调试) → Info(消息) → Warn(警告) → Error(错误) → None(不输出)
  12. /// </summary>
  13. public LoggerLevel Level = LoggerLevel.Info;
  14. /// <summary>
  15. /// 消息模板
  16. /// {CallClass} 调用所在类
  17. /// {CallMethod} 调用所在方法
  18. /// {LogLevel} 日志级别
  19. /// {CreateDateTime} 创建日期
  20. /// {Tag} 标签
  21. /// {Message} 日志消息
  22. /// </summary>
  23. public string MessageTemplate { get; set; } = "{CallClass}.{CallMethod} {LogLevel} {CreateDateTime} {Tag} {Message}";
  24. /// <summary>
  25. /// 日志输出目录,默认为根目录下的Log目录(基于日期掩码)({root}软件输出根目录)
  26. /// <para>
  27. /// 按月建立文件夹:{root}\\Log\\{yyyy-MM}
  28. /// 按日建立文件夹:{root}\\Log\\{yyyy-MM-dd}
  29. /// </para>
  30. /// </summary>
  31. public string Dir { get; set; } = "{root}\\Log\\{yyyy-MM}";
  32. /// <summary>
  33. /// 日志文件名(基于日期掩码),不含扩展名
  34. /// </summary>
  35. public string FileName { get; set; } = "{yyyy-MM-dd}";
  36. /// <summary>
  37. /// 文件大小限制,单位为K,0表示不限制,默认:200M(204800KB)
  38. /// 文件大小超过此大小时,文件会新建。
  39. /// </summary>
  40. public long FileSizeLimit { get; set; } = ((long)200 * 1024);
  41. /// <summary>
  42. /// 是否自动删除历史文件
  43. /// </summary>
  44. public bool AutoDelete { get; set; } = true;
  45. /// <summary>
  46. /// 自动删除多久之前的日志文件,默认:30天
  47. /// </summary>
  48. public TimeSpan AutoDeleteTimeSpan { get; set; } = TimeSpan.FromDays(30);
  49. /// <summary>
  50. /// 过期文件轮询时间间隔,默认:1小时
  51. /// </summary>
  52. public TimeSpan AutoDeleteInterval { get; set; } = TimeSpan.FromHours(1);
  53. /// <summary>
  54. /// 队列缓冲区大小,默认:10万
  55. /// </summary>
  56. public int QueueBufferSize { get; set; } = 100000;
  57. /// <summary>
  58. /// 文件写入缓冲区大小,默认:2000(如果写入文件缓冲区超过此值,则开始写入文件)
  59. /// </summary>
  60. public int WriteBufferSize { get; set; } = 2000;
  61. /// <summary>
  62. /// 文件写入间隔时间,默认:10秒(如果文件写入缓冲区未满,达到此时间时把文件写入缓存区的数据写入文件)
  63. /// </summary>
  64. public TimeSpan WriteInterval { get; set; } = TimeSpan.FromSeconds(10);
  65. }
  66. }

使用

直接在需要记录日志的地方使用下面的代码

  1. LoggerFactory.Default.Debug("调试日志");
  2. LoggerFactory.Default.Info("消息日志");
  3. LoggerFactory.Default.Warn("警告日志");
  4. LoggerFactory.Default.Error("错误日志");