在设置中进行了设置
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{asctime} {message}',
'style': '{',
'datefmt': '%y-%m-%dT%H:%M:%S',
},
'standard': {
# levelname)s %(pathname)s %(funcName
'format': '%(asctime)s:%(name)s:%(message)s',
# 'style': '{',
'datefmt': '%y-%m-%dT%H:%M:%S',
},
},
'handlers': {
'file_error': {
'level': 'ERROR',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'logs/error.log'),
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 5,
'formatter': 'verbose',
},
'file_rotate': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'logs/info.log'),
'maxBytes': 1024 * 1024 * 5, # 5 MB
'backupCount': 5,
'formatter': 'standard',
},
},
'loggers': {
'django': {
'handlers': ['file_rotate'],
'level': 'INFO',
'propagate': True,
},
'django_error': {
'handlers': ['file_error'],
'level': 'ERROR',
'propagate': True,
},
},
}
然后我在 ModelView 中请求时在脚本中执行此操作
log = logging.getLogger('django') или 'django_error' все равно пусто
log.info(s) # s какая то строка
该文件已创建但为空。空无一物。默默地,没有错误。日志文件夹的权限 777
虽然如果我通过命令 python manager.py 命令执行相同的操作,那么我会在日志中看到条目,并且 'django' 和 'django_error' 工作正常
我还注意到这里的 django 成功地写入了它的日志。我看那里出现了 CRF 令牌不正确的日志......一般来说,日志似乎有效。为什么我写不出来...
UPD
一般来说,我意识到如果日志文本是拉丁文,它会写入日志。如果文本是俄文字母,则不写。并做了这个和那个:
log.info('1 test!', request.user)
log.info(u'2 привет', request.user)
log.info('3 Здарова!', request.user)
只写第一行。其他2个被跳过。没有错误,默默地。
也许有人遇到过?可以做什么?在 ubuntu python 3.6 服务器上运行
在 Windows 10 python 3.6 上,一切都在本地运行。
一般来说,将'encoding': 'utf-8'添加到处理程序就足够了