티스토리 뷰
파이썬에서는 로그 출력을 위한 logging 모듈을 제공합니다.
아주 간단히 사용할 수 있으며
print 함수등을 콘솔에 출력하는 것보다 효율 적입니다.
[로그레벨]
파이썬에서는 안드로이드와 거의 동일한 로그 레벨을 제공합니다.
DEBUG
INFO
WARNING
ERROR
CRITICAL
[간단한 logging 모듈 사용 예제]
import logging as log
log.basicConfig(filename='./log.txt', level=log.DEBUG)
if __name__ == '__main__':
log.debug('debug')
log.info('info')
log.warning('warning')
log.error('error')
log.critical('critical')
basicConfig 함수를 통해서 filemode 를 a, w 등으로 지정할 수 있다.
a 는 append 즉 기존파일에 이어서 기록하고 w 는 기존파일을 삭제하고 새로 작성한다.
[콘솔창과 파일에 동시에 로그 남기기]
import logging
import logging.handlers
log = logging.getLogger('log_name')
log.setLevel(logging.DEBUG)
fileHandler = logging.FileHandler('./log.txt')
streamHandler = logging.StreamHandler()
log.addHandler(fileHandler)
log.addHandler(streamHandler)
if __name__ == '__main__':
log.debug('debug')
log.info('info')
log.warning('warning')
log.error('error')
log.critical('critical')
[Formatter 적용하기]
import logging
import logging.handlers
log = logging.getLogger('log_name')
log.setLevel(logging.DEBUG)
formatter = logging.Formatter('[%(levelname)s] (%(filename)s:%(lineno)d) > %(message)s')
fileHandler = logging.FileHandler('./log.txt')
streamHandler = logging.StreamHandler()
fileHandler.setFormatter(formatter)
streamHandler.setFormatter(formatter)
log.addHandler(fileHandler)
log.addHandler(streamHandler)
if __name__ == '__main__':
log.debug('debug')
log.info('info')
log.warning('warning')
log.error('error')
log.critical('critical')
Formatter Keywords
이름 | 포맷 | 설명 |
---|---|---|
asctime | %(asctime)s | 날짜 시간, 밀리세컨드까지 출력. ex) 2017.11.17 12:31:45,342 |
created | %(created)f | 생성 시간 출력 |
filename | %(filename)s | 파일명 |
funcnName | %(funcName)s | 함수명 |
levelname | %(levelname)s | 로그 레벨(DEBUG, INFO, WARNING, ERROR, CRITICAL) |
levelno | %(levelno)s | 로그 레벨을 수치화해서 출력(10, 20, 30, …) |
lineno | %(lineno)d | 소스의 라인 넘버 |
module | %(module)s | 모듈 이름 |
msecs | %(msecs)d | 로그 생성 시간에서 밀리세컨드 시간 부분만 출력 |
message | %(message)s | 로그 메시지 |
name | %(name)s | 로그 이름 |
pathname | %(pathname)s | 소스 경로 |
process | %(process)d | 프로세스(Process) ID |
processName | %(processName)s | 프로세스 이름 |
thread | %(thread)d | Thread ID |
threadName | %(threadName)s | Thread Name |
[파일의 최대 용량 및 새로운 파일 생성하는 방법]
RotatingFileHandler 함수를 이용해서 파일의 최대 크기 및 새로운 파일을 생성할 때 최대 개수를 지정해줄수 있다.
아래와 같이 코드를 이용해서 최대 10MB, 총 20개의 로그 파일을 만들어서 순회 하도록 해보자
log_max_size = 10 * 1024 * 1024
log_file_count = 20
fileHandler = logging.handlers.RotatingFileHandler(filename='./log.txt', maxBytes=log_max_size,
backupCount=log_file_count)
[logging.handlers]
위에서는 FileHander 와 StreamingHandler 및 RotatingFileHandler 등을 사용했었는데 이외에도 다양한 핸들러들이 존재한다.
핸들러 | 설명 |
---|---|
SocketHandler | 외부 로그 서버로 소켓을 통해 전송 |
DatagramHandler | UDP 통신을 통해 외부 서버로 전송 |
SysLogHandler | Unix 류의 syslog 데몬에게 로그 전송 |
SMTPHandler | 메일로 로그 전송 |
HTTPHandler | HTTP를 통해 로그 전송 |
'python lecture > basic' 카테고리의 다른 글
[edu] for문 (반복문, range) (0) | 2019.02.28 |
---|---|
[edu] attribute (속성) (0) | 2019.02.26 |
[edu] duck typing(덕 타이핑) (0) | 2019.02.25 |
[edu] Stack/Queue (스택/큐 자료구조) (0) | 2019.02.24 |
[edu] 클래스(class) (0) | 2019.02.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- virtualenv
- admin.py
- 이미지 비교
- PuTTYGen
- 장고
- 면접답변
- pycrypto
- 파이썬 강좌
- GIT
- 모바일 스킨 적용
- gitlab
- chatbot
- gitignore
- 모바일 테마 적용
- django
- 엑셀 비교
- 문서 비교
- 장고 카톡 자동응답
- django chatbot
- 문과 코딩
- 파이썬 독학
- 면접정답
- Python
- 파이썬 입문
- 파이썬
- 파이썬 프로그래밍
- 플러스친구 자동응답
- Tistory
- 장고 플러스친구 자동응답
- wsgi
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함