Django日志的配置

之前在使用日志的時候洲愤,由于對django日志的了解不是很深刻,而且日常開發(fā)也是不怎么需要關注寫入到文件的日志。我們項目里面的日志配置奕塑,在線上是可以打印的,但是在開發(fā)過程中去打印日志在文件中是看不到東西的家肯,代碼如下:

import logging

logger = logging.getLogger('info')

def my_view(request):
  try:
    user_token = user.user_token
    session_key = request.session.session_key
    cache.set(session_key,user_token,settings.SESSION_COOKIE_AGE)
  except Exception as e:
    logger.error(str(e))

第一時間反應覺得是日志等級出錯了龄砰,看看我們的配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(pathname)s %(module)s %(funcName)s %(lineno)d: %(message)s'
        },
    },
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        }
    },
    'handlers': {
        'null': {
            'level': 'DEBUG',
            'class': 'logging.NullHandler',
        },
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'filters': ['require_debug_false'], 
            'include_html': True,
        },
        'file_handler': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/') + 'main.log',
            'formatter': 'verbose'
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
        },
        'cmdb_info': {
            'level': 'INFO',
            'filters': ['require_debug_false'],
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, 'logs/') + 'cmdb_info.log',
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'console': {
            'level': 'INFO',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
        },
        'django.request': {
            'handlers': ['file_handler', 'mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
        'django.security': {
            'handlers': ['file_handler'],
            'level': 'ERROR',
            'propagate': False,
        },
        'cmdb_log': {
            'handlers': ['cmdb_info'],
            'level': 'INFO',
            'propagate': False,
        },
    }
}

調試過后我得出一個結論,這個日志配置有問題讨衣,開發(fā)環(huán)境根本用不了换棚。當然面對這種比較復雜的配置信息,在不仔細閱讀文檔肯定是看不懂反镇。
學習Django日志的配置固蚤,首推Django日志官方文檔,這里我只做最基本的總結歹茶。

日志框架有四個部分組成:

loggers(記錄儀)就是我們在打印自定義日志之前需要獲取的對象夕玩,只有在Django配置文件LOGGING['loggers']這個字典中配置過的才能被獲取到你弦。

logger = logging.getLogger('cmdb_log')

handlers(處理程序)在上方配置示例中可以看到,LOGGING字典中的handers是用來定義處理程序的风秤,LOGGING['loggers']這個字典中也有handlers這個字段鳖目。這個字段(list)是用來指定某一個或多個處理程序,來處理這個記錄儀需要被處理的日志信息缤弦。當然記錄儀有自己的日志等級领迈,處理程序同樣有自己的等級,如果記錄儀的等級是INFO碍沐,而處理程序的等級是WARNING那這個日志會被處理程序忽略掉狸捅。

filters(過濾器)這個字段在LOGGING字典中存在是用來定義過濾器,LOGGING['loggers']LOGGING['handlers']中存在是用來多次過濾日志信息是否符合被處理的條件累提。在上方配置實例中可以看到require_debug_false這個對象尘喝,是用來判斷運行環(huán)境中DEBUG為False。就是這個過濾條件導致日志在開發(fā)環(huán)境無法打印斋陪,如果想要測試日志的打印可以使用如下的配置信息朽褪。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
            'style': '{',
        },
        'simple': {
            'format': '{levelname} {message}',
            'style': '{',
        },
    },
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        }
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'filters': ['require_debug_true'],  # 開發(fā)環(huán)境
            'class': 'logging.StreamHandler',  # 處理程序 輸出控制臺
            'formatter': 'verbose'
        },
        'file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',  # 處理程序 輸出到文件
            'filters': ['require_debug_true'],  # 開發(fā)環(huán)境
            'filename': os.path.join(BASE_DIR, 'logs/info.log'),  # 文件路徑
            'formatter': 'verbose'  # 輸出格式
        }
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            'level': 'INFO',
            'propagate': True,
        },
        'jfq_info': {  # 自定以日志信息
            'level': 'INFO',  # INFO等級
            'class': 'logging.FileHandler',
            'formatter': 'verbose'  # 輸出格式
        },
    },
}

這樣的配置文件,所有的請求信息會打印在控制臺和指定/logs/info.log中

至于LOGGING['loggers']django无虚、django.request是什么自定義日志配置

Formatters(格式化程序) 配置寫法參考python日志格式化對象

推薦參考的博客缔赠,博主是一個優(yōu)秀的獨立開發(fā)者

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市友题,隨后出現的幾起案子嗤堰,更是在濱河造成了極大的恐慌,老刑警劉巖度宦,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踢匣,死亡現場離奇詭異,居然都是意外死亡戈抄,警方通過查閱死者的電腦和手機离唬,發(fā)現死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來划鸽,“玉大人男娄,你說我怎么就攤上這事⊙。” “怎么了模闲?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長崭捍。 經常有香客問我尸折,道長,這世上最難降的妖魔是什么殷蛇? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任实夹,我火速辦了婚禮橄浓,結果婚禮上,老公的妹妹穿的比我還像新娘亮航。我一直安慰自己荸实,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布缴淋。 她就那樣靜靜地躺著准给,像睡著了一般。 火紅的嫁衣襯著肌膚如雪重抖。 梳的紋絲不亂的頭發(fā)上露氮,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音钟沛,去河邊找鬼畔规。 笑死,一個胖子當著我的面吹牛恨统,可吹牛的內容都是我干的叁扫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼畜埋,長吁一口氣:“原來是場噩夢啊……” “哼莫绣!你這毒婦竟也來了?” 一聲冷哼從身側響起由捎,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤兔综,失蹤者是張志新(化名)和其女友劉穎饿凛,沒想到半個月后狞玛,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡涧窒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年心肪,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纠吴。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡硬鞍,死狀恐怖,靈堂內的尸體忽然破棺而出戴已,到底是詐尸還是另有隱情固该,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布糖儡,位于F島的核電站伐坏,受9級特大地震影響,放射性物質發(fā)生泄漏握联。R本人自食惡果不足惜桦沉,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一每瞒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纯露,春花似錦剿骨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至组橄,卻和暖如春荞膘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玉工。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工羽资, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遵班。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓屠升,卻偏偏與公主長得像,于是被迫代替她去往敵國和親狭郑。 傳聞我的和親對象是個殘疾皇子腹暖,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容