ログログログのジャンゴDjangoのログ

Djangoのログログ

 

 

簡単な紹介

DjangoはPythonの印刷ログのロギングツールとして提供されます使用しています。

ロギングはスレッドセーフ、主に4つの部分から構成されています。

  1. ロガー 
    ユーザによって使用される直接インタフェースは、ハンドラ・ログに送信されます。
  2. ハンドラ 
    へ行く制御ログ出力、コンソール、ファイル... 
    ロガーが複数のハンドラを持つことができます
  3. フィルター 
    ロガーハンドラからのログの流れを制御することができます
  4. フォーマッタは、 
    ログの形式を制御します

使用

sesetti.pyでのレーンの設定項目

設定ファイルに(定義ロガー、ハンドラ、フォーマッタ等を含む)カスタマイズされたログ出力を使用してDjangoのロギング

たとえば、次のように設定ファイルが定義されています。

= os.path.joinのBASE_LOG_DIR(BASE_DIR、 "ログ")
ロギングが= { 
    'バージョン' :. 1、#予約語
    'disable_existing_loggersを'偽、ロガー例#無効既存の
    #ログファイル形式
    'フォーマッタ':{ 
        #詳細なログ形式
        '標準' { 
            '形式':「[%(いるasctime)S] [%(のthreadName)S:%(スレッド)D] [TASK_ID:%(名)S] [%(ファイル名)S: %(LINENO)D] ' 
                      ' [%(levelname)S] [%(メッセージ)S] ' 
        }、 単純なログ形式
        'シンプル'{ 
            '形式':' [%(levelname)S] [%(いるasctime)S] [%(ファイル名)S:%(LINENO)D]%(メッセージ)S ' 
        }、 は特殊なログ形式を定義する
        '収集「:{ 
            '形式': '%(メッセージ)S'  
        }
    }、
    フィルタ#
    'フィルタ' { 
        'require_debug_true '{ 
            '() ':' django.utils.log.RequireDebugTrue'、
        }、
    }、 プロセッサ
    'ハンドラ':{ 
        #プリント端末
        'コンソール' { 
            'レベル':' DEBUG ' 
            'フィルタ':[ 'require_debug_true']、#印刷画面がDjangoのデバッグログにtrueの場合にのみ
            'クラス':' logging.StreamHandler」、#
            'フォーマッター':''シンプル
        }、
        #デフォルト
        'デフォルト':{ 
            'レベル': 'INFO'、参加する(BASE_LOG_DIR、 "xxx_info.log") 、#のログファイル
            'MAXBYTES':1024 * 1024 * 50、#の50Mログのサイズ 
            "クラス: 『logging.handlers.RotatingFileHandler』、#はファイルに保存され、自動カット
            'ファイル名':os.path.join(BASE_LOG_DIR、 "xxx_info.log")、#のログファイル
            'backupCount':3、#は、いくつかのバックアップ
            'フォーマッター': '標準'、
            'エンコーディングを': 'UTF-8' 、
        }、 は、具体的には、エラー・ログと呼ば
        {:「エラー」
            「レベル」:「エラー」、
            「クラス」:「logging.handlers.RotatingFileHandler」、ファイル、自動カットに保存#
            「ファイル名」はos.path。参加する(BASE_LOG_DIR、 "xxx_err.log") 、#のログファイル
            'MAXBYTES':1024 * 1024 * 50、#のログサイズ50M 
            'BACKUPCOUNT ':。5、
            'フォーマッター':'標準'、
            "エンコーディング「:」。UTF-8「 
        }、 具体ログ特定の情報の収集を定義する
        「収集」:{
            'レベル': 'INFO'、 
            」ハンドラ:[ 『コンソール』、 '収集] 
            「クラス」:「logging.handlers.RotatingFileHandler」、ファイルに保存#、自動カット
            'ファイル名':os.path.join(BASE_LOG_DIR、 "xxx_collect.log")、
            'MAXBYTES':1024×1024×50、#ログサイズ50M 
            'BACKUPCOUNT' :. 5、
            'フォーマッタ': '収集'、
            '符号' 「UTF-8」
        } 
    }、
    「ロガー」:{ 
       #デフォルト・ロガー・アプリケーションは、以下の
        「」{ 
            「ハンドラ」:[「デフォルト」、「コンソール」、」エラー『]コンソール、#その行ができ』 「削除
            レベル」:「DEBUG「」を
            伝播」: 『TRUE、ロガーは、#高いレベルに伝達されず
        、} 
        収集『更に別々に処理ロガー名前位』
        』収集'{ 
            'レベル': '情報を' 
        } 
    } 
}

使用中のviews.py

ログのインポート
#生成ロガーインスタンスは、現在のファイルの名前と呼ばれる
= logging.getLogger(__ name__)ロガーを
生成するロガーという名前コレクト例#
collect_logger = logging.getLogger(「コレクト」)

:DEF指数(要求を)
    logger.debug (「孟孟要求が来る....」)
    logger.info(「萌複数の要求来る....」)
    logger.debug(「インデックスビューの関数である内部app01」)

    collect_logger。情報( "利用者1:北京")

    のリターンはHttpResponse( "OK")

プロセス

 

 
 
 
 
 
 

 

簡単な紹介

DjangoはPythonの印刷ログのロギングツールとして提供されます使用しています。

ロギングはスレッドセーフ、主に4つの部分から構成されています。

  1. ロガー 
    ユーザによって使用される直接インタフェースは、ハンドラ・ログに送信されます。
  2. ハンドラ 
    へ行く制御ログ出力、コンソール、ファイル... 
    ロガーが複数のハンドラを持つことができます
  3. フィルター 
    ロガーハンドラからのログの流れを制御することができます
  4. フォーマッタは、 
    ログの形式を制御します

使用

sesetti.pyでのレーンの設定項目

Django通过在settings文件中使用LOGGING来定制日志输出(包括定义logger, handler, formatter等)

例如,settings文件中定义如下:

BASE_LOG_DIR = os.path.join(BASE_DIR, "log")
LOGGING = {
    'version': 1,  # 保留字
    'disable_existing_loggers': False,  # 禁用已经存在的logger实例
    # 日志文件的格式
    'formatters': {
        # 详细的日志格式
        'standard': {
            'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
                      '[%(levelname)s][%(message)s]'
        },
        # 简单的日志格式
        'simple': {
            'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
        },
        # 定义一个特殊的日志格式
        'collect': {
            'format': '%(message)s'
        }
    },
    # 过滤器
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    # 处理器
    'handlers': {
        # 在终端打印
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],  # 只有在Django debug为True时才在屏幕打印日志
            'class': 'logging.StreamHandler',  #
            'formatter': 'simple'
        },
        # 默认的
        'default': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, "xxx_info.log"),  # 日志文件
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 3,  # 最多备份几个
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
        # 专门用来记错误日志
        'error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, "xxx_err.log"),  # 日志文件
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 5,
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
        # 专门定义一个收集特定信息的日志
        'collect': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, "xxx_collect.log"),
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 5,
            'formatter': 'collect',
            'encoding': "utf-8"
        }
    },
    'loggers': {
       # 默认的logger应用如下配置
        '': {
            'handlers': ['default', 'console', 'error'],  # 上线之后可以把'console'移除
            'level': 'DEBUG',
            'propagate': True,  # 向不向更高级别的logger传递
        },
        # 名为 'collect'的logger还单独处理
        'collect': {
            'handlers': ['console', 'collect'],
            'level': 'INFO',
        }
    },
}

views.py里使用

import logging
# 生成一个以当前文件名为名字的logger实例
logger = logging.getLogger(__name__)
# 生成一个名为collect的logger实例
collect_logger = logging.getLogger("collect")

def index(request):
    logger.debug("一个萌萌的请求过来了。。。。")
    logger.info("一个更萌的请求过来了。。。。")
    logger.debug("这是app01里面的index视图函数")

    collect_logger.info("用户1:北京")

    return HttpResponse("OK")

流程

 

 
 
 

简介

Django使用python自带的logging 作为日志打印工具。

logging 是线程安全的,其主要由4部分组成:

  1. Logger 
    用户使用的直接接口,将日志传递给Handler
  2. Handler 
    控制日志输出到哪里,console,file… 
    一个logger可以有多个Handler
  3. Filter 
    控制哪些日志可以从logger流向Handler
  4. Formatter 
    控制日志的格式

使用

项目里sesetti.py里配置

Django通过在settings文件中使用LOGGING来定制日志输出(包括定义logger, handler, formatter等)

例如,settings文件中定义如下:

BASE_LOG_DIR = os.path.join(BASE_DIR, "log")
LOGGING = {
    'version': 1,  # 保留字
    'disable_existing_loggers': False,  # 禁用已经存在的logger实例
    # 日志文件的格式
    'formatters': {
        # 详细的日志格式
        'standard': {
            'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]'
                      '[%(levelname)s][%(message)s]'
        },
        # 简单的日志格式
        'simple': {
            'format': '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
        },
        # 定义一个特殊的日志格式
        'collect': {
            'format': '%(message)s'
        }
    },
    # 过滤器
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    # 处理器
    'handlers': {
        # 在终端打印
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],  # 只有在Django debug为True时才在屏幕打印日志
            'class': 'logging.StreamHandler',  #
            'formatter': 'simple'
        },
        # 默认的
        'default': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, "xxx_info.log"),  # 日志文件
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 3,  # 最多备份几个
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
        # 专门用来记错误日志
        'error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, "xxx_err.log"),  # 日志文件
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 5,
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
        # 专门定义一个收集特定信息的日志
        'collect': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, "xxx_collect.log"),
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 5,
            'formatter': 'collect',
            'encoding': "utf-8"
        }
    },
    'loggers': {
       # 默认的logger应用如下配置
        '': {
            'handlers': ['default', 'console', 'error'],  # 上线之后可以把'console'移除
            'level': 'DEBUG',
            'propagate': True,  # 向不向更高级别的logger传递
        },
        # 名为 'collect'的logger还单独处理
        'collect': {
            'handlers': ['console', 'collect'],
            'level': 'INFO',
        }
    },
}

views.py里使用

import logging
# 生成一个以当前文件名为名字的logger实例
logger = logging.getLogger(__name__)
# 生成一个名为collect的logger实例
collect_logger = logging.getLogger("collect")

def index(request):
    logger.debug("一个萌萌的请求过来了。。。。")
    logger.info("一个更萌的请求过来了。。。。")
    logger.debug("这是app01里面的index视图函数")

    collect_logger.info("用户1:北京")

    return HttpResponse("OK")

流程

 

おすすめ

転載: www.cnblogs.com/taosiyu/p/11220327.html