본문 바로가기

파이썬

python logging모듈사용하기

반응형

참고:http://hamait.tistory.com/880#recentComments


<기본>

'''
logging은 다양한 기능을 제공하고 있다.
python3.x에서 logging 기본모듈이므로 import해서 쓰면된다구한다.
스트림과 파일에 동시에 로그를 남기거나, 로그 레벨에 따라 출력되는 로그를 제한할수 있다.
로깅 정보는 로그의 레벨에 따라서 출력을 제한할수있다
INFO 레벨보다 심각한 것만 출력하게 하라!! 라고 로깅 시스템을 사용하면 설정 가능합니다.
DEBUG>INFO>WARNING>ERROR>Critical
파이썬 로깅의 기본 설정은 WARNING
이순서에서 더 높은 레벨인 Error는 출력이 되지만, 하위레벨(INFO,Debug)는 출력이 안된다.
즉 이레벨은 DEBUG나 INFO로 낮추어 설정 한 후에 사용해야한다.

'''
import logging
'''
logging모듈의 info함수를 불러 직접 함수를 호출하기도 하지만,
보통 자신만의 특정한 로거를 따로 만든다.
logging.info("something")
'''
#<1번>나의 로깅모듈 사용 (생성 )
#이렇게 호출하면 my라는 특정로거를 생성하게 된다.
mylogger=logging.getLogger("my")

#<2번>레벨설정
#setLevel메소드 사용해서 INFO레벨 이상은 출력가능하도록 설정 (Debuf출력안함)
mylogger.setLevel(logging.INFO)

#<3번>핸들러설정
#핸들러란 내가 로깅한 정보가 출력되는 위치 설정하는 것,현재 콘솔에 출력하도록 설정했으나, 파일,DB등을 통해출력가능
stream_hander=logging.StreamHandler()
mylogger.addHandler(stream_hander)

#<4번>파일핸들러설정
#filehander 객체를 만들어서 나의 로거에 추가하면된다.
file_handelr=logging.FileHandler('my.log')
mylogger.addHandler(file_handelr)

#<5번> 출력포매팅설정
#이메세지가 언제쓰여졌는지, 어떤 모듈에서 쓰여졌는지 기타정보를 출력하고싶을때 포매팅
#asctime:시간 name:로거이름 levelname 로깅레벨 message 메세지

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handelr.setFormatter(formatter)
stream_hander.setFormatter(formatter)

mylogger.info("server start!!!")



import logging

class log:
def __init__(self,name): #name은 python 파일 이름
self.mylogger = logging.getLogger(name+".py")
self.mylogger.setLevel(logging.DEBUG)
self.stream_hander = logging.StreamHandler()
self.file_handelr = logging.FileHandler('log_1.log')
self.formatter = logging.Formatter(('[%(asctime)s]|%(name)s|%(levelname)s|%(message)s'))

def console(self,data):
print("콘솔출력"+ data)
self.mylogger.addHandler(self.stream_hander)
self.stream_hander.setFormatter(self.formatter)
self.mylogger.info(data)

def file(self,data):
print("파일출력"+ data)
self.mylogger.addHandler(self.file_handelr)
self.file_handelr.setFormatter(self.formatter)
self.mylogger.info(data)



try ..... except Exception as e:
e=str(e) #NoneType을 str로 변환한후
self.log.console(e)


반응형

'파이썬' 카테고리의 다른 글

Python list,dictionary  (0) 2019.01.16
Python dictionry에 list추가 및 csv파일 읽기  (0) 2019.01.15
Python예외처리  (0) 2019.01.11
파이참 입력 이상할때  (4) 2018.12.24