[解決済み] django 1.3+ 用のシンプルな Log to File の例
2022-12-01 06:55:21
質問
リリースノートにはこう書かれています。
Django 1.3 は Python の logging モジュールのフレームワークレベルのサポートを追加しました。 のサポートが追加されました。
それはいいですね。それを利用したいと思います。 残念ながら 文書 は、これがいかに簡単で価値があるかを示す完全な動作例コードの形で、銀の皿の上で私にすべてを渡してくれません。
このファンキーな新機能をどのようにセットアップすれば、自分のコードに
logging.debug('really awesome stuff dude: %s' % somevar)
でファイル "/tmp/application.log" が埋め尽くされるのを確認します。
18:31:59 Apr 21 2011 awesome stuff dude: foobar
18:32:00 Apr 21 2011 awesome stuff dude: foobar
18:32:01 Apr 21 2011 awesome stuff dude: foobar
Pythonのデフォルトのロギングとこの「フレームワークレベルのサポート」は何が違うのでしょうか?
どのように解決するのですか?
私は本当にそんなにこれが大好きです!ここでは、あなたの作業例です。これは本当に素晴らしいです!
まず、これをあなたの
settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
'datefmt' : "%d/%b/%Y %H:%M:%S"
},
},
'handlers': {
'null': {
'level':'DEBUG',
'class':'django.utils.log.NullHandler',
},
'logfile': {
'level':'DEBUG',
'class':'logging.handlers.RotatingFileHandler',
'filename': SITE_ROOT + "/logfile",
'maxBytes': 50000,
'backupCount': 2,
'formatter': 'standard',
},
'console':{
'level':'INFO',
'class':'logging.StreamHandler',
'formatter': 'standard'
},
},
'loggers': {
'django': {
'handlers':['console'],
'propagate': True,
'level':'WARN',
},
'django.db.backends': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'MYAPP': {
'handlers': ['console', 'logfile'],
'level': 'DEBUG',
},
}
}
さて、これらは何を意味するのでしょうか?
- フォーマット ./manage.py runserver と同じスタイルで出てくるようにしたい。
- ハンドラ - 私は2つのログが欲しいです - デバッグテキストファイルと情報コンソールです。 これにより、私は本当に(必要であれば)掘り下げ、ボンネットの下で何が起こっているのかを見るためにテキストファイルを見ることができます。
- ロガー - ここで、何を記録したいかを明確にします。 一般的に、django は WARN 以上を取得します。例外は (それゆえに伝播します) バックエンドで、SQL 呼び出しがクレイジーになることがあるので、私はそれを見るのが好きです。 最後に、私のアプリは、2つのハンドラを持っていて、すべてをそこにプッシュしています。
さて、MYAPPがこれを使えるようにするにはどうしたらいいでしょうか。
につきまして ドキュメント は、これをファイル(views.py)の一番上に置きます。
import logging
log = logging.getLogger(__name__)
そして、何かを取り出すにはこうします。
log.debug("Hey there it works!!")
log.info("Hey there it works!!")
log.warn("Hey there it works!!")
log.error("Hey there it works!!")
関連
-
[解決済み] Python/Django: ランサーバーではコンソールにログ、Apacheではファイルにログを出力
-
[解決済み] Django の管理者パスワードをリセットする方法は?
-
[解決済み] Django のフォームで、あるフィールドを編集できないように readonly (または disabled) にするにはどうしたらいいですか?
-
[解決済み] Django - テンプレートのforループで番号を反復する
-
[解決済み】Djangoで空のクエリセットがあるかどうか確認する
-
[解決済み] [Solved] カスタムDjango manage.pyコマンドをテストドライバから直接呼び出すにはどうしたらいいですか?
-
[解決済み] django サイトのサーバーエラーのログを取る方法
-
[解決済み] django で複数のオブジェクトを削除する
-
[解決済み] RESTful API のトークン認証:トークンは定期的に変更する必要がありますか?
-
[解決済み] Django で https 接続を非 https 接続と同じように簡単にテストするには 'runserver' を使うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ユニコードオブジェクトはハッシュ化する前にエンコードする必要がある問題を解決
-
AttributeError: 'str' オブジェクトには 'decode' という属性がありません。
-
Djangoキャッシュの説明
-
[解決済み] NoReverseMatchエラーとは何ですか、またどのように修正しますか?
-
[解決済み] Django のカスタムフィールドで User モデルを拡張する
-
[解決済み] RuntimeWarning: DateTimeFieldがナイーブなdatetimeを受信した
-
[解決済み] Docker-Compose使用時にDjangoデータベースのマイグレーションをどのように行うか?
-
[解決済み] Djangoのvalues()の項目名を変更する方法は?
-
[解決済み] Django の {% url %} テンプレートタグでクエリパラメータを渡すことは可能でしょうか?
-
[解決済み] Djangoテンプレートでネストされたforループで一番外側のforloop.counterにアクセスする方法は?