如何将django控制台的所有日志写入自定义文件文件?

时间:2019-02-25 14:18:18

标签: django python-3.x logging

我刚刚开始在我的项目中尝试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文件中, 但是它没有发生。 有人可以建议我这里有什么问题吗?还是有其他方法可以解决?

3 个答案:

答案 0 :(得分:2)

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

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,
    },
},
}

答案 1 :(得分: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,
    },
},
}

答案 2 :(得分:0)

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

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

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