오기 OS 오기 logging.config #은 전용 로깅 도입되지 BASE_DIR = os.path.dirname (os.path.dirname ( __FILE__ )) #의 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 ' % S \ 기록 \ boss.log ' %의 BASE_DIR의 # 로그 출력 개시를위한 세 가지 형식 정의 standard_format을 = '[%합니다 (asctime과) S [% (threadName) S : % (나사) D] [TASK_ID % (이름) S [% (파일명) S : % (LINENO) D] ' \ ' [% (levelname) S [% (메시지) S] ' # 이름 getlogger 이름 지정 simple_format를 = ' [% (levelname) S [%합니다 (asctime과) S [% (파일명) S : % (LINENO) D] % ( 메시지) S ' id_simple_format = ' [% (levelname) S [%합니다 (asctime과) S] % (메시지) S ' #는 로그 출력단의 포맷 정의 logfile_dir 함께 = os.path.dirname (os.path.abspath을 ( __FILE__ )) # 디렉토리에 로그 파일 = logfile_name ' all2.log ' #의 로그 파일 이름 #을로그 디렉토리가 정의 만들 수없는 경우 경우 하지 (logfile_dir) os.path.isdir : 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 } }, ' 필터 ' {} ' 핸들러 ' : { # 터미널의 로그에 인쇄 된 ' 스트림 ' { ' 레벨 ' : ' 디버그 ' , ' 클래스 ' : ' logging.StreamHandler ' , #화면에 인쇄 된 ' 포맷터 ' : ' 간단한 ' } # 로그 파일에 인쇄, 수집하고 정보를 원하시면 위의 로그 ' 액세스 ' { ' 레벨 ' : ' 디버그 ' , ' 클래스 ' : ' logging.handlers.RotatingFileHandler ' , # 파일로 저장 ' 포맷터 ' : ' 표준 ' , ' 파일 이름 ' : logfile_path를, #의 로그 파일 ' MaxBytes는 ' : * 1024 * 5, 1024 #의 로그 크기 5M ' BACKUPCOUNT ' 5 : , ' 인코딩 ' : ' UTF-8 ' , #의 로그 파일의 인코딩이 더 이상 중국어에 대해 걱정할 필요가 없습니다 깨진 로그 } #의 파일로 인쇄 로그 수집 및 오류 위의 로그 ' 보스 ' : { ' 레벨 ' : ' 오류 ' , ' 클래스 ' : ' logging.handlers.RotatingFileHandler ' , #파일로 저장 ' 포맷터 ' : ' id_simple ' , ' 파일 이름 ' : BOSS_LOG_PATH, #의 로그 파일 # 'MaxBytes를': 1024 * 1024 * 5, # 로그 크기 5M ' MaxBytes ' : 300, #의 로그 크기 5M ' BACKUPCOUNT ' : 5 , ' 인코딩 ' : ' UTF-8 ' , #의 로그 파일의 인코딩은 더 이상 왜곡 로그인 중국어에 대해 걱정할 필요가 없다 } }, ' 로거 ' : {# Logging.getLogger (__ name__) 로거 구성을 얻을 ' { ' 핸들러 ' : ' 스트리밍 ' , ' 접속 ' , ' BOSS ' , # 처리기 플러스 개의 상기 정의, 즉 로그 데이터 두 파일을 작성하고 화면에 인쇄 ' 수준 ' : ' 디버그 ' , ' 전파 ' : 사실, # 까지 (더 높은 수준의 로거) 통과 } # 우리는 다른 로거 객체 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 ()