以下の内容はhttps://kamatimaru.hatenablog.com/entry/2020/05/28/020441より取得しました。


DjangoをEC2インスタンス上で動かす環境を構築する(その6:アプリケーションログを出力する。)

参考文献

  • 『』の「Chapter 11 環境構築とデプロイの自動化」
  • 『』の「第7章 デプロイ」

その6:アプリケーションログを出力する。

概要

/var/log配下にDjangoのアプリケーションログを出力するように設定する。

手順

マイグレーションを実行する。

http://localhost:8000/polls/にアクセスするので、便宜的に「appserver」ユーザーでマイグレーションを実行する。

$ whoami
appserver
$ python3 manage.py maigrate
Django側のログ出力の設定

・公式ドキュメントは以下
docs.djangoproject.com

settings.pyにログ出力の設定を追加する。

[settings.py]

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {"simple": {"format": "%(asctime)s [%(levelname)s] %(message)s"}},
    "handlers": {
        "file": {
            "level": "INFO",
            "class": "logging.FileHandler",
            "filename": "/var/log/django/app.log",
            "formatter": "simple",
        },
    },
    "loggers": {
        "django": {"handlers": ["file"], "level": "INFO", "propagate": False,},
        "": {"handlers": ["file"], "level": "INFO", "propagate": False,},
    },
}

※検証して気づいたことだが、loggersにキーが空文字のloggerを設定しないと、自分で書いたログが出力されない。

出力先のディレクトリの作成

/var/log/djangoディレクトリを作成して、所有者をappserver:appserverに設定する。

$ ls -ld /var/log
drwxr-xr-x 9 root root 4096  525 03:19 /var/log
$ sudo mkdir /var/log/django
$ sudo chown appserver:appserver /var/log/django
$ ls -ld /var/log/django
drwxr-xr-x 2 appserver appserver 6  526 00:13 /var/log/django
ログが出力されることの確認

mysite/polls/views.pyIndexViewにテスト用のログを仕込む。

[views.py]

import logging
# ...
logger = logging.getLogger(__name__)
# ...
    def get_queryset(self):
        """Retern the last five published questions."""
        logger.info('Hello world!') # テスト用のログ出力
# ...

gunicornを起動する。

$ sudo systemctl start gunicorn.service

・空のログファイルが作成されていることを確認する。

$ ls -l /var/log/django
合計 0
-rw-r--r-- 1 appserver appserver 0  526 00:18 app.log
$

curlでurlを叩いてみる。

$ curl -I "http://localhost:8000/polls/"
HTTP/1.1 200 OK
Server: gunicorn/20.0.4
Date: Tue, 26 May 2020 00:45:30 GMT
Connection: close
Content-Type: text/html; charset=utf-8
X-Frame-Options: DENY
Content-Length: 109
X-Content-Type-Options: nosniff

・ログが出力されていることを確認する。

$ cat /var/log/django/app.log
2020-05-26 10:24:49,149 [INFO] Hello world!
2020-05-26 10:25:03,851 [INFO] Hello world!
2020-05-26 10:25:19,327 [INFO] Hello world!
$

以上で「その6:アプリケーションログを出力する。」は完了。
その7に続く。




以上の内容はhttps://kamatimaru.hatenablog.com/entry/2020/05/28/020441より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14