我正在尝试使用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!")
答案 0 :(得分: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
},
答案 1 :(得分:0)
尝试添加loggers
部分旁边的部分:
'root': {
'level': 'DEBUG', # or whatever
'handlers': ['file'],
},
应该允许输出所有记录器的事件。您还需要从其他记录器中删除handlers
条目(否则您将获得重复的消息)。您无需设置propagate
,因为默认值为True
。请注意,您的处理程序级别设置为INFO
,但您的记录器设置为DEBUG
- 这意味着您将看不到任何DEBUG
消息,除非您删除处理程序的级别或将其设置为DEBUG
。
答案 2 :(得分:0)
为了解决这个问题,我决定采用 mcolin 建议将__name__
替换为完美运行的应用名称