前置作業
在開始設定之前,若你還沒將環境建立起來的話,先安裝 Django 並建立專案:
# 安裝 Django
python -m pip install Django
# 查看 Django 版本
python -m django --version
# 建立 Django 專案
django-admin startproject <project-name>
project-name/
├── project-name
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py
了解 Logging 設定
Django 所提供的 Logging 設定很靈活,但也因為這樣反而一開始會有點不知所措。所以,先來了解大項目然後接著深入了解細部設定。Logging 設定基本上是存放於 settings.py 檔案中,預設的設定檔不會有 Logging 相關參數,所以你需要自行加入,內容如下:
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        # TODO
    },
    'handlers': {
        # TODO
    },
    'loggers': {
        # TODO
    },
    'filters': {
        # TODO
    },
}
- formatters:代表你想要怎麼顯示你的 Log,類似建立模板的概念。
- handlers:代表你想要怎麼處理你的 Log,試想如果我有非例行的任務,我可能只需要它顯示於 Console 或者存放在不同的地方,因此這時候我們就可以使用不同的 Handler 來處理。
- loggers:這部分代表我們將前兩項組合起來形成一個"模組",這樣方便我們在程式中使用。
Formatters 設定
了解大致上的內容,讓我們來了解細部設定,首先針對 formatters,以下是範例:
    'formatters': {
        'your-formatter': {
            '()': 'django.utils.log.ServerFormatter',
            'format': '[%(asctime)s] %(message)s',
        }
    },
- %(asctime)s:代表我想使用我們比較習慣的時間格式,如:2003-07-08 16:49:45,896。
- %(message)s:代表欲輸出的訊息。
[2017-04-26 11:07:33,380] Your message is hereHandlers 設定
繼續設定 handlers 部分:
    'handlers': {
        'web': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/path/to/your-web.log',
            'formatter': 'your-formatter'
        },
        'other_service': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/path/to/your-other-service.log',
            'formatter': 'your-formatter'
        },
    },
- level:Log 層級
- class:代表我們要怎麼處理 Log 訊息,例如寫入文字檔,或者輸出至 Console。此範例中,我們設定兩個 Handler 都要寫入文字檔,所以使用 logging.FileHandler。
- filename:若你要寫入文字檔,你需要指定檔案要存放在哪裡。
- formatter:代表我們要使用哪個模板(也就是我們剛剛前面設定的)。
Loggers 設定
    'loggers': {
        'your-logger': {
            'handlers': ['web'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
- handlers:指定哪個 Handler 來處理,注意這邊可以指定多個。
- level:Log 層級。
使用 Logging
在你的程式中加入:
# Use logging library
import logging
# Get an instance of a logger
logger = logging.getLogger('your-logger')
# Log a message
logger.info('Your message is here.')
Environment :
・ Debian
Reference :
・ Django - Logging

