我一直在試圖用我自己的腳本記錄器(https://docs.python.org/2/library/logging.html),現在通過出色的後利用ianalexander Django的設置,在這裏:Python的日誌到標準輸出,而不是文件中指定
http://ianalexandr.com/blog/getting-started-with-django-logging-in-5-minutes.html
但在這兩種情況下,同樣的問題依然存在。我的錯誤消息出現在STDOUT中。 。啓動服務器的命令行。 。而不是在提到的文件中。然而,有趣的是文件被創建。有沒有人知道爲什麼這些文件可以打開但不能寫入?
有趣的是,當我通過命令行調用我自己的腳本時,這是不正確的,所以我很可能使用django。
這些是我的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': 'DEBUG',
# 'class': 'logging.FileHandler',
# 'filename': '/path/to/django/debug.log',
# },
# },
'handlers': {
'main_file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'django_main.log',
'formatter': 'verbose'
},
},
# 'filters': {
# 'special': {
# '()': 'project.logging.SpecialFilter',
# 'foo': 'bar',
# }
# },
# 'loggers': {
# 'django.request': {
# 'handlers': ['file'],
# 'level': 'DEBUG',
# 'propagate': True,
# },
# },
'loggers': {
'django': {
'handlers':['main_file'],
'propagate': True,
'level':'DEBUG',
},
'jira4': { ##MYAPP
'handlers': ['main_file'],
'level': 'DEBUG',
},
}
}
每請求,這是我寫的使用Django的系統外日誌代碼:
def set_logs(self, log_name = 'main_log', dir_name = 'logs', base_name = 'log'):
print " .. . . SETTING LOGS!"
this_logger = logging.getLogger(log_name)
this_logger.setLevel(logging.DEBUG) ## Basicallty all
#logger.setLevel(logging.INFO)
# create file handler which logs even debug messages
fhe = logging.FileHandler('logs/tick_ERR.log')
fhe.setLevel(logging.ERROR)
fhw = logging.FileHandler(dir_name + '/' +base_name+ '_WARN.log', 'w')
fhw.setLevel(logging.WARNING)
fhc = logging.FileHandler(dir_name + '/' +base_name+ '_CRITICAL.log', 'w')
fhc.setLevel(logging.CRITICAL)
fhd = logging.FileHandler(dir_name + '/' +base_name+ '_DEBUG.log')
fhd.setLevel(logging.DEBUG)
fhi = logging.FileHandler(dir_name + '/' +base_name+ '_INFO.log')
fhi.setLevel(logging.INFO)
# create console handler with a higher log level
# ch = logging.StreamHandler()
# ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s : %(message)s')
fhe.setFormatter(formatter)
fhw.setFormatter(formatter)
fhc.setFormatter(formatter)
fhd.setFormatter(formatter)
fhi.setFormatter(formatter)
# ch.setFormatter(formatter)
# add the handlers to the logger
this_logger.addHandler(fhe)
this_logger.addHandler(fhw)
this_logger.addHandler(fhc)
this_logger.addHandler(fhd)
this_logger.addHandler(fhi)
return this_logger
再後來我打電話
this_logger = logging.getLogger(log_name)
print "Got logger: "
pp.pprint(this_logger)
this_logger.critical(test_flag + " __________________3__________ IS THI IN ALL ? ___________3_________")
this_logger.critical(test_flag + " THIS IS CRITICAL!! ")
this_logger.error(test_flag + " THIS IS A DARN ERROR! ")
的有趣的是,當我在本地文件中使用幾乎相同的代碼並通過cmd行調用時,它就工作了。什麼是不允許我寫的django環境允許我創建這些日誌文件?
您能顯示一些代碼嗎?可能你沒有正確使用'loggging'? – avi 2014-10-06 07:14:28
非常感謝您閱讀本文。它讓我陷入了嚴重的損失! – 2014-10-06 07:31:02