ホームページ > バックエンド開発 > Python チュートリアル > Djangoログモジュールの構成の詳細説明

Djangoログモジュールの構成の詳細説明

Y2J
リリース: 2017-05-10 11:46:39
オリジナル
2865 人が閲覧しました

プログラム開発においてログは欠かせません。ログを通じて、どこにエラーがあるのか​​、どのような異常があるのか​​を分析することができます。これは実稼働環境で非常に役立ちます。 Java 開発では、通常、log4j や logback などのサードパーティ コンポーネントが使用されます。以下の記事では主に Django ログモジュールのロギングに関する情報を紹介していますので、必要な方は参考にしてください。

はじめに

Django はログ出力情報の点で非常に充実しており、リクエスト情報、設定構成、トラックバック情報がすべて利用可能であり、デバッグするには十分です。しかし、オンライン環境では、ユーザーがこの情報 (コードが公開される) を見られると非常に危険です。したがって、オンラインでのデバッグをオフにする必要がありますが、デバッグ情報を破棄するにはログモジュールを使用する必要があります。 logging モジュールは実際には

Python

のモジュールであり、Django でローカライズされたサポートが多数あります。

ロガーについて


まず第一に、ロギングにはフォーマッタ、フィルター、プロセッサ ハンドラー、ログ インスタンス ロガーの 4 つの主要なものがあることを理解する必要があります。

加工工程

1

2

3

   formatter

logger ----> handler ----------------> files, emails

    filter

ログイン後にコピー

加工工程はこんな感じです。まずはコードから。取得するのはロガー インスタンスであり、このインスタンスを使用して情報を記録します。

1

2

3

4

5

6

7

8

9

10

11

# import the logging library

import logging

  

# Get an instance of a logger

logger = logging.getLogger('django')

  

def my_view(request, arg1, arg):

 ...

 if bad_mojo:

 # Log an error message

 logger.error('Something went wrong!')

ログイン後にコピー

その後、django という名前のロガーが対応するハンドラーに情報を渡し、ハンドラーはフォーマッタとフィルターを使用して情報を処理し、ログを送信します (ファイル、データベースに保存、または電子メールで送信します)。

一般に、ハンドラーは、send_email、error_file などの処理を担当することができ、ハンドラーはロガーで再利用できます。たとえば、Django プロセッサは send_email と error_file という 2 つのプロセッサを使用し、リクエスト プロセッサは error_file と info_file という 2 つのプロセッサを使用します。Logger とハンドラは多対多の関係として理解できます。

設定方法


Pythonでは、.conf、.iniなどの複数の形式でロギングを設定できます。

Django では、ログ設定を設定に書き込みます。対応する構成と説明は次のとおりです(参考のみ)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

#管理员邮箱

ADMINS = (

 ('laixintao','*******@163.com'),

)

  

#非空链接,却发生404错误,发送通知MANAGERS

SEND_BROKEN_LINK_EMAILS = True

MANAGERS = ADMINS

  

#Email设置

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_HOST= 'smtp.163.com'#QQ邮箱SMTP服务器(邮箱需要开通SMTP服务)

EMAIL_PORT= 25 #QQ邮箱SMTP服务端口

EMAIL_HOST_USER = '**********@163.com' #我的邮箱帐号

EMAIL_HOST_PASSWORD = '**************' #授权码

EMAIL_SUBJECT_PREFIX = 'website' #为邮件标题的前缀,默认是'[django]'

EMAIL_USE_TLS = True #开启安全链接

DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER #设置发件人

  

#logging日志配置

LOGGING = {

 'version': 1,

 'disable_existing_loggers': True,

 'formatters': {#日志格式

 'standard': {

  'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'}

 },

 'filters': {#过滤器

 'require_debug_false': {

  '()': 'django.utils.log.RequireDebugFalse',

  }

 },

 'handlers': {#处理器

 'null': {

  'level': 'DEBUG',

  'class': 'logging.NullHandler',

 },

 'mail_admins': {#发送邮件通知管理员

  'level': 'ERROR',

  'class': 'django.utils.log.AdminEmailHandler',

  'filters': ['require_debug_false'],# 仅当 DEBUG = False 时才发送邮件

  'include_html': True,

 },

 'debug': {#记录到日志文件(需要创建对应的目录,否则会出错)

  'level':'DEBUG',

  'class':'logging.handlers.RotatingFileHandler',

  'filename': os.path.join(BASE_DIR, "log",'debug.log'),#日志输出文件

  'maxBytes':1024*1024*5,#文件大小

  'backupCount': 5,#备份份数

  'formatter':'standard',#使用哪种formatters日志格式

 },

 'console':{#输出到控制台

  'level': 'DEBUG',

  'class': 'logging.StreamHandler',

  'formatter': 'standard',

 },

 },

 'loggers': {#logging管理器

 'django': {

  'handlers': ['console'],

  'level': 'DEBUG',

  'propagate': False

 },

 'django.request': {

  'handlers': ['debug','mail_admins'],

  'level': 'ERROR',

  'propagate': True,

 },

 # 对于不在 ALLOWED_HOSTS 中的请求不发送报错邮件

 'django.security.DisallowedHost': {

  'handlers': ['null'],

  'propagate': False,

 },

 }

}

ログイン後にコピー

上記の

設定ファイル

には、3 つのログプロセッサがあります。それらは次のとおりです:

    'django.request': Django のリクエストは、エラーが発生すると自動的に記録し、デバッグを使用して情報をファイルに記録し、mail_admins は
  1. mail

    を通じて管理者に情報を送信します。ここのメール機能は素晴らしいです!これはプレーン テキスト メッセージではなく、ブラウザで表示されるエラー ページとまったく同じ HTML ファイルです。メール機能を正常に使用するには、私と同様に上記のメール送信者情報を設定する必要があります。 NetEase に直接行ってメール アドレスを申請しました。次の 3 つの点に特に注意してください。 1. 必ず電子メール サービス プロバイダーにアクセスして SMTP サービスを有効にしてください。 2. 異なる電子メール サービス プロバイダーでは、いくつかの特別な設定がある場合があります。たとえば、NetEase は次のようなクライアント認証コードを提供します。 Webページへのログインパスワードではありません。 3. サービスプロバイダーが送信頻度に制限を設けていないか注意してください。

  2. 「django」: コンソールプロセッサを使用して情報を出力します。このプロセッサは開発中に使用できます (何? 印刷? 低すぎます!)
  3. 最後のプロセッサについては
  4. Note

    を参照してください。

  5. 最後に、ログパスの応答に許可を与えることを忘れないでください。たとえば、Apache2 サーバーの場合は、www-data 書き込み権限を付与する必要があります:

1

2

sudo chown -R [yourname]:www-data [log]

sudo chmod -R g+s [log]

ログイン後にコピー

概要

[関連する推奨事項]

1.

Python の無料ビデオ チュートリアル

2. Python とデータ収集のビデオチュートリアル

3 . Python学習マニュアル

以上がDjangoログモジュールの構成の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート