インポートOS インポート logging.config #はログの中に導入されるだけでなく BASE_DIR = os.path.dirname(os.path.dirname(__FILE__ )) #1 DB_PATHのR&LT = '%S \ DB \ db.txt' %BASE_DIR DB_PATH R&LT = ' %S \ DB '%のBASE_DIRの #は、ログファイルのパス定義 開き、log_pathのR&LT = ' のaccess.log \%Sの\ログ'%BASE_DIR BOSS_LOG_PATH = R&LT ' \ boss.log%S \ログ'%のBASE_DIRの #は、ログ出力の開始のための3つの形式定義 standard_formatを= "[%(いるasctime)S] [%(のthreadName)S:%(スレッド)D] [TASK_ID:%(名)S] [%(ファイル名)S:%(LINENO)D] ' \ ' [%(levelname) S] [%(メッセージ)S] ' #名前が指定のgetLogger名前である simple_format = ' %(LINENO)D]%(:[%(levelname)S] [%(いるasctime)S] [%(ファイル名)Sメッセージ)をS ' id_simple_format = ' [%(levelname)S] [%(いるasctime)S]%(メッセージ)S ' #は、ログ出力端のフォーマット定義 LOGFILE_DIR持つ= os.path.dirname(os.path.abspathを(__FILE__)) #ディレクトリのログファイルには、 = LOGFILE_NAME 「all2.log 」 #のログファイル名 #をログディレクトリが定義されて作成するために存在していない場合は IF ないos.path.isdir(LOGFILE_DIR): os.mkdir(LOGFILE_DIR) #フルパスログファイルへ logfile_path = os.path.join(LOGFILE_DIR、LOGFILE_NAME) #のログ設定辞書を LOGGING_DIC = { ' バージョン':1 、 ' disable_existing_loggers ' :偽、 ' フォーマッタ' { ' 標準' { ' 形式' :standard_format }、 ' シンプル' :{ ' フォーマット' :simple_format }、 ' id_simple ' { ' 形式' :id_simple_format }、 }、 ' フィルタ' :{}、 ' ハンドラ' :{ #端末のログに印刷 ' ストリーム' { ' レベル':' DEBUG ' ' クラス':' logging.StreamHandler "、 #画面に印刷された 「フォーマッター」:「シンプル」 }、 #ログファイルに出力、ログ収集と情報上記の 「アクセス」:{ 「レベル」:「DEBUG 」、 「クラス」:「logging.handlers.RotatingFileHandler 」、 #ファイルに保存 「フォーマッタ」:「標準」、 「ファイル名」:logfile_pathを、 #のログファイル ' MAXBYTES ':* 1024 1024 * 5、 #のログサイズ5M ' BACKUPCOUNT ':5 、 ' エンコーディング':' UTF-8 '、 #のログファイルのエンコーディング、もはやが文字化けログの中国を心配する必要はありません } #のファイルへ出力しますログ収集とエラー上記ログ 「BOSS 」:{ 「レベル」:「エラー」、 「クラス」:「logging.handlers.RotatingFileHandler 」、 #ファイルに保存 ' フォーマッタ':' id_simple ' 、 ' ファイル名':BOSS_LOG_PATH、 #のログファイル #'MAXBYTES':* 1024 1024 * 5、#ログのサイズ5M ' MAXBYTES ':300、 #のログサイズ5M ' BACKUPCOUNTを':5 、 「エンコーディング」:「UTF-8 」、 #のログファイルのエンコーディング、もはや中国が文字化けログを心配する必要はあり }、 }、 「ロガー」: {#Logging.getLogger(__ name__)ロガーの構成を得る 「」{ 「ハンドラ」:[ 「流れ」、「アクセス」、「BOSS 」 ]、 #ハンドラはプラス2上に定義されている、すなわち、データを記録両方のファイルを作成し、画面に印刷された 「レベル」:「DEBUG 」、 「伝播」:真、 #アップ(より高いレベルロガー)通過 }、 #我々はその後、別のロガーオブジェクトlogging.getLogger(__ name__)がかかります印刷は異なる識別情報をログインしたときにことを保証異なる__name__、ファイル #をしかし、我々がそこに着いたときに見つけることができないキーの名前を見つけるためロガーに名前を取ったので、デフォルトのキー=「」の構成 }、 } DEFのload_my_logging_cfg(): logging.config.dictConfig(LOGGING_DIC) #のロギング設定上記のインポート定義 = logging.getLoggerロガー(__name__) #は、ログの例を生成 logger.info(' それは作品を!') #のファイルのレコード操作状態 IF __name__ == ' __main__ ' : load_my_logging_cfg()