1

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

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!")
4

3 回答 3

0

使用不同的文件处理程序类型会有帮助吗?它可能是您的格式化程序(尝试简单的格式化程序?)这是我在我的一个 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
    },
于 2013-11-12T13:21:58.430 回答
0

尝试在该部分旁边添加一个loggers部分:

'root': {
    'level': 'DEBUG', # or whatever
    'handlers': ['file'],
},

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

于 2013-11-13T07:34:39.123 回答
0

为了解决这个问题,我决定像mcolin建议的那样__name__用完美运行的应用程序名称替换

于 2013-11-13T13:38:13.443 回答