我想通過我的settings.py文件向我的日誌行添加一個變量。Django:將變量傳遞給登錄設置文件
這是在設置中的代碼(記錄部分):
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'mail_admins': {
'level': 'CRITICAL',
'class': 'django.utils.log.AdminEmailHandler'
},
'customhandler':{
'level':'DEBUG',
'class':'logging.RotatingFileHandler',
'formatter':'custom_format',
'filename':LOG_LOCATION
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'CRITICAL',
'propagate': True,
},
'Logger_Custom1': {
'handlers':['customhandler'],
'level':'DEBUG',
'propagate':True
},
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
'custom_format':{
'format':'[%(asctime)s %(levelname)s T:%(threadName)s F:%(funcName)s ] %(message)s '
},
}
}
上面的代碼工作正常,但現在我想每個日誌消息以具有在端部的變量。像這樣的:
MyVariable = "Somelines"
[%(asctime)s %(levelname)s T:%(threadName)s F:%(funcName)s ] %(message)s 'MyVariable
所以我的日誌將有每個日誌行結束時該變量的內容。我知道我們可以在視圖函數內部這樣做:logging.warning('% before you %','Look','Leap')
但是這需要我們在任何地方單獨包含該行。此外,當我們需要添加或更改該變量名稱時,我們需要在每個文件的任何位置更改該行。
所以我想知道是否有任何方法直接從settings.py中做到這一點,以便我們可以做出一個更改,它將適用於所有日誌消息。
我,可以證明在你的實際代碼有幫助,以及(只是'%(消息)s'之後)添加在格式字符串末尾的空間!這樣,Django日誌消息和自定義消息之間就會有一個空格。 另外請注意,只有'testvar'是一個字符串,這纔會起作用!你可以通過用字符串函數,即'str(testvar)'來包裝它,使它更健壯一些。 – Hannele
嘿,這是一個很棒的提示......謝謝...... –