파이썬 사용해보기-4

2023. 1. 26. 19:00프로그래밍

728x90

프로그램을 디버깅 하다보면, 콘솔에다 대고 뿌리는 메시지를 따라가기에는 한계가 있을 때가 많다. 그럴 때는 파일로 내가 원하는 디버깅 레벨의 메시지를 저장해 놓고 곱씹어 보면 뭔가 실마리가 풀릴것이란 기대를 하곤 하지...그래서 로그를 사용하는 방법을 알아보도록 한다.

로그를 사용하기 위한 방법은 여러 선생님들께 물어본 결과 환경 설정 파일

그리고 로그 파일 import 순으로 일어나면 될 듯 하다.

1. 로그 환경 설정 파일

파일 이름은 logging.tobee.conf 로 정해보기로 한다.

1.1.[loggers]

이 섹션에다가 뭘 하면 되는 데 디폴트는 root 나머지는 내꺼라고 정해보자

[loggers]
keys=root,lib_tobee,com.tobee.lib_tobee
 

저번 문서에서 사용한 이름들이 보이지? 이런것들을 디버깅 하고 싶다고 난..

 

1.2.[handlers]

[handlers]
keys=consoleHandler,fileHandler
 

넘어가기로 하자...입 아프니까...

 

1.3.[formatters]

keys=fileFormatter,consoleFormatter
 

이것도 넘어간다.. 세세한 내용은 나도 잘 모르지만 말그대로 형식 출력이겠지 뭐...

 

1.4. [logger_root], [logger_com.tobee.lib_tobee], [logger_lib_tobee]

한개 정도만 보면 될 듯하다..

[logger_lib_tobee]
#level=DEBUG
level=NOTSET
handlers=consoleHandler,fileHandler
qualname=com.tobee.lib_tobee
propagate=0
 

위의 내용도 차츰차츰 알아가야 할 내용이므로 그냥 넘어 간다.

1.5. [handler_consoleHandler]

넘어 가는 걸로...

1.6. [handler_fileHandler]

이 섹션에서 중요한 것은 현재 내 상태로는 args=('logs\\logfile.log',) 인듯 하다.

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('logs\\logfile.log',)
 

1.7. 나머지

[formatter_fileFormatter], [formatter_consoleFormatter]

형식을 지정하는 것으로 보인다...

Appendix A. 참고 하면 된다.

 

2. 로그 사용하기

​코드는 다음과 같다.

#로깅 환경을 임포트한다
import logging.config

#어떤 환경설정을 사용 할 것인가?
logging.config.fileConfig('config\\logging.tobee.conf')

#로깅 파일을 남겨보자
logger.debug('[' +__name__ + ']끝!!!')
 

전체 소스는 Appendix B 로...

로그 파일 내용은 Appendix C

이상.

Appendix A - 로깅을 위한 환경 설정 파일

 
[loggers]
keys=root,lib_test,com.tobee.lib_tobee
[handlers]
keys=consoleHandler,fileHandler
[formatters]
keys=fileFormatter,consoleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_com.tobee.lib_tobee]
#level=DEBUG
level=NOTSET
handlers=consoleHandler,fileHandler
qualname=com.tobee.lib_tobee
propagate=0
[logger_lib_test]
#level=DEBUG
level=NOTSET
handlers=consoleHandler,fileHandler
qualname=lib_test
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=WARNING
formatter=consoleFormatter
args=(sys.stdout,)
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('logs\\logfile.log',)
[formatter_fileFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=
[formatter_consoleFormatter]
format=%(levelname)s - %(message)s
datefmt=

Appendix B. lib_test.py 소스

from com.tobee import lib_tobee

logging.config.fileConfig('config\\logging.tobee.conf')
logger = logging.getLogger('lib_test')

	def main(args):
		message = "내가 너에게 주마 내 메시지"
		clsInstance = lib_tobee.TobeeClass(message)
		clsInstance.showMyMessage()
		logger.debug('[' +__name__ + ']끝!!!')

main(sys.argv)
 

Appendix C. lib_tobee.py 소스

#-*- coding: utf-8 -*-
import logging.config

logging.config.fileConfig('config\\logging.tobee.conf')
logger = logging.getLogger(__name__)

class TobeeClass:
	message = ""

	def __init__(self, message): # 생성자 / 객체 생성시 .
		self.message = message


	def showMyMessage(self):
		print "It's your message [%s]!" % (self.message)
		logger.debug('[' +__name__ + ']message-->' + self.message)

	def __del__(self): # 소멸자 / 객체 소멸시 호출
		message = None
 

Appendix C. logfile.log 출력

2015-03-20 11:12:51,483 - com.tobee.lib_tobee - DEBUG - [com.tobee.lib_tobee]message-->내가 너에게 주마 내 메시지
2015-03-20 11:12:51,484 - lib_test - DEBUG - [__main__]끝!!!
 

​▶ 여담으로 파이썬에서 NULL의 의미로 쓰이는 것은 None 이다.

728x90

'프로그래밍' 카테고리의 다른 글

[C#] quartz 모듈 사용하기  (0) 2023.01.28
파이썬 사용해보기 - 5  (0) 2023.01.27
파이썬 사용해보기-3  (0) 2023.01.25
파이썬 사용해보기-2  (0) 2023.01.24
파이썬 사용해보기-1  (0) 2023.01.23