django logger 配置

本文介绍的是关于django的logger配置

首先导入

  1. import os
  2. from pathlib import Path
  3. import datetime

再向 setting 中添加以下文件

  1. # 日志配置
  2. # 创建日志的路径
  3. LOG_PATH = os.path.join(BASE_DIR, 'log')
  4. # 如果地址不存在,则自动创建log文件夹
  5. if not os.path.join(LOG_PATH):
  6. os.mkdir(LOG_PATH)
  7. LOGGING = {
  8. 'version': 1,
  9. 'disable_existing_loggers': False,
  10. 'formatters': {
  11. # 日志格式
  12. 'standard': {
  13. 'format': '[%(asctime)s] [%(filename)s:%(lineno)d] [%(module)s:%(funcName)s] '
  14. '[%(levelname)s]- %(message)s'},
  15. 'simple': { # 简单格式
  16. 'format': '%(levelname)s %(message)s'
  17. },
  18. },
  19. # 过滤
  20. 'filters': {
  21. 'require_debug_true': {
  22. '()': 'django.utils.log.RequireDebugTrue',
  23. },
  24. },
  25. # 定义具体处理日志的方式
  26. 'handlers': {
  27. # 默认记录所有日志
  28. 'default': {
  29. 'level': 'INFO',
  30. 'class': 'logging.handlers.RotatingFileHandler',
  31. 'filename': os.path.join(LOG_PATH, 'all-{}.log'.format(datetime.datetime.now().strftime('%Y-%m-%d'))),
  32. 'maxBytes': 1024 ** 5, # 文件大小
  33. 'backupCount': 5, # 备份数
  34. 'formatter': 'standard', # 输出格式
  35. 'encoding': 'utf-8', # 设置默认编码,否则打印出来汉字乱码
  36. },
  37. # 输出错误日志
  38. 'error': {
  39. 'level': 'ERROR',
  40. 'class': 'logging.handlers.RotatingFileHandler',
  41. 'filename': os.path.join(LOG_PATH, 'error-{}.log'.format(datetime.datetime.now().strftime('%Y-%m-%d'))),
  42. 'maxBytes': 1024 ** 5, # 文件大小
  43. 'backupCount': 5, # 备份数
  44. 'formatter': 'standard', # 输出格式
  45. 'encoding': 'utf-8', # 设置默认编码
  46. },
  47. # 控制台输出
  48. 'console': {
  49. 'level': 'DEBUG',
  50. 'class': 'logging.StreamHandler',
  51. 'formatter': 'standard'
  52. },
  53. # 输出info日志
  54. 'info': {
  55. 'level': 'INFO',
  56. 'class': 'logging.handlers.RotatingFileHandler',
  57. 'filename': os.path.join(LOG_PATH, 'info-{}.log'.format(datetime.datetime.now().strftime('%Y-%m-%d'))),
  58. 'maxBytes': 1024 ** 5,
  59. 'backupCount': 5,
  60. 'formatter': 'standard',
  61. 'encoding': 'utf-8', # 设置默认编码
  62. },
  63. },
  64. # 配置用哪几种 handlers 来处理日志
  65. 'loggers': {
  66. # 类型 为 django 处理所有类型的日志, 默认调用
  67. 'django': {
  68. 'handlers': ['default', 'console'],
  69. 'level': 'INFO',
  70. 'propagate': False
  71. },
  72. # log 调用时需要当作参数传入
  73. 'log': {
  74. 'handlers': ['error', 'info', 'console', 'default'],
  75. 'level': 'INFO',
  76. 'propagate': True
  77. },
  78. }
  79. }