【问题标题】:How to write all logs of django console to to custome file file?如何将 django 控制台的所有日志写入自定义文件文件?
【发布时间】:2019-07-18 23:24:03
【问题描述】:

我刚开始在我的项目中尝试 django 日志记录模块...

我正在关注 django 文档,用于将 Django 的默认日志配置中的所有日志记录到客户日志文件中。 我将following code 复制到了我的settings.py

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
    'file': {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': '/project/debug.log',
    },
},
'loggers': {
    'django': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },
},
}

这里我假设我所有的控制台日志都必须写在debug.log文件中, 但它没有发生。 谁能建议我这里出了什么问题或有其他方法吗?

【问题讨论】:

  • 目录/project/ 是否存在并且有适当的权限从您启动项目的用户那里写入?
  • @phoenix 我认为它存在正确,因为当文件路径错误时它给了我一个找不到文件的错误?

标签: django python-3.x logging


【解决方案1】:

这可能是因为您没有 django 处理程序的日志。 定义一个空字符串作为默认值:

...
'loggers': {
    '': {
        'handlers': ['file'],
        'level': 'DEBUG',
        'propagate': True,
    },
},
...

“django”记录器仅在 django 中使用一次 - 在库本身中。 当创建一个记录器时,你给它一个名字——通常是这样的:log = logging.getLogger(__name__)——其中一个名字是它将会被使用的模块的名字。 您可以指定和配置不同的模块以不同的方式编写/报告。

【讨论】:

    【解决方案2】:

    用静态路由替换,别忘了给文件权限。

    LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/home/user/proyect/debug.log,
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
    }
    

    【讨论】:

      【解决方案3】:

      您的问题出在文件名上,您需要将其设置为正确的路径!

      LOGGING = {
      'version': 1,
      'disable_existing_loggers': False,
      'handlers': {
          'file': {
              'level': 'DEBUG',
              'class': 'logging.FileHandler',
              'filename': os.path.join(BASE_DIR,'APPNAME.log'),
          },
      },
      'loggers': {
          'django': {
              'handlers': ['file'],
              'level': 'DEBUG',
              'propagate': True,
          },
      },
      }
      

      【讨论】:

      • 我认为不是这样,因为当文件路径错误时它给了我一个找不到文件的错误?
      • 你的 .log 文件是什么名字?
      • 是否有办法将文件名更改为 s3 存储桶中的文件?
      • 当然,您可以将键“文件名”的值替换为回调函数,该函数可以完成您的所有身份验证和文件写入。像“文件名”这样的东西:def store_s3() { #logic} 然后按照这个指导问题:stackoverflow.com/questions/40336918/…
      猜你喜欢
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 2016-10-13
      • 2018-03-15
      相关资源
      最近更新 更多