Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django日志记录创建一个空文件_Python_Django_Logging - Fatal编程技术网

Python Django日志记录创建一个空文件

Python Django日志记录创建一个空文件,python,django,logging,Python,Django,Logging,我正在尝试使用Django日志,所以我遵循了一些教程,但它似乎不起作用,文件已创建,但它是空的。 这是我的密码: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message

我正在尝试使用Django日志,所以我遵循了一些教程,但它似乎不起作用,文件已创建,但它是空的。 这是我的密码:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': 'LogFile.log',
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {
            'handlers':['file'],
            'propagate': True,
            'level':'DEBUG',
        },
        'app': {
            'handlers': ['file'],
            'level': 'DEBUG',
        },
}
}
并且认为:

import logging
logger = logging.getLogger(__name__)

def myfunction():
    logger.info("this is a debug message!")

使用不同的文件处理程序类型会有帮助吗? 可能是你的格式化程序,试试简单的格式化程序? 这是我在Django应用程序中的一个例子

    'default': {
        'level':'INFO',
        'class':'logging.handlers.RotatingFileHandler',
        'filename': 'LogFile.log',
        'maxBytes': 1024*1024*5, # 5 MB
        'backupCount': 5,
        'formatter':'simple',
    }, 
[编辑:因为那没用] 也许您需要一个不太具体的记录器实例?:

   '': {
        'handlers': ['default'],
        'level': 'INFO',
        'propagate': True
    },

尝试在记录器部分旁边添加一个部分:


这将允许输出来自所有记录器的事件。您还需要从其他记录器中删除处理程序条目,否则您将获得重复的消息。您不需要设置propagate,因为默认值为True。请注意,您的处理程序级别设置为INFO,但您的日志记录程序设置为DEBUG-这意味着您将不会看到任何调试消息,除非您删除处理程序级别或将其设置为DEBUG。

为了解决此问题,我决定按照mcolin的建议,将uu名称替换为运行正常的应用程序名称。

可能只是一些缓冲问题。。。而且FileHandler对于并发访问来说是不安全的,所以如果在生产服务器上运行,这可能不是一个好主意。也许“app”和“django”不能正确识别您的日志记录位置,尝试在logger设置中或者作为一个实验,尝试logger=logging.getLogger'app'以查看它是否工作当我在getLogger函数中指定名称时,它工作,但当它是名称时,它不工作,因此对我来说,这意味着“django”和“app”的记录器不适用于您尝试登录的位置。日志记录可能适用于任何地方,或者您是否可以更具体一些?您的“应用程序”记录器是否是django应用程序的正确名称?因此,在您正在记录的位置,如果打印_uname _;,您会看到什么?你试过propogate=true吗?我看到了我的应用程序的名称,我在Loggers中使用了propogate=true,因为他没有将其作为答案而是作为评论,但他将其作为对其答案的评论。
'root': {
    'level': 'DEBUG', # or whatever
    'handlers': ['file'],
},