don't stop believing

blockchain 테스트에 사용한 python 함수 - getLogfileNameWithPath 본문

Python/Basic

blockchain 테스트에 사용한 python 함수 - getLogfileNameWithPath

Tongchun 2018. 12. 17. 15:52

blockchain 테스트에 사용한 python 함수를 설명합니다.

  • getDateStrings - 날짜 - 년, 월, 일, 시, 분, 초를 확인하는 함수입니다.
  • getLogfileNameWithPath - 로그 기록을 위해 폴더를 생성하고 경로를 반환합니다.
  • getRequestId - ramdom으로 숫자를 반환합니다.
  • moveFile - 특정 파일을 로그 폴더로 이동시킵니다.
  • saveResultData - 데이터를 파일에 저장합니다.
  • convertToHex - String을 hex로 변환합니다.
  • leftPad64 - 왼쪽에 (또는 오른쪽에) 0을 채워 고정된 길이로 만듭니다.
  • getTestConfig - json 형태의 config 파일을 만들고 불러옵니다.
  • waitingCount - time.sleep() 할 때 동적으로 카운트를 셉니다.
  • callRPC - requests 모듈을 사용해 http API를 호출합니다.
  • callWS - websocket 모듈을 사용해 API 통신을 합니다.


테스트 스크립트 실행하면 로그를 남기도록 해야 합니다.

실행할때 마다 로그를 쌓을 폴더를 만들고 로그 파일 이름을 확인하는 함수입니다.


getLogfileNameWithPath 함수에서는 저장하려는 로그 폴더까지만 만들고 실제 파일은 만들지 않습니다. 로그파일 이름만 리턴합니다.

다른 함수에서 로그 파일을 기록하게 됩니다.

# coding=utf-8
import time, datetime
import pathlib

class nGleUtils():

	def getDateStrings(self):
		'''
		날짜를 확인하기 위해 여러 형태로 날자 데이터를 불러옵니다.
		'''

		# 2018-12-17 15:09:47.003753
		i = datetime.datetime.now()

		# 2018-12-17 15:09:47
		dt = datetime.datetime(i.year, i.month, i.day, i.hour, i.minute, i.second)

		# 1545026987.0
		ts = time.mktime(dt.timetuple())

		return (i, dt, ts)

	def getLogfileNameWithPath(self):
		'''
		테스트 실행할 때 마다 log file을 생성합니다.
		로그 파일에 사용할 폴더 경로와 로그파일 전체 경로를 리턴합니다.
		'''

		# 로그 폴더를 만들기 위해 여러 형태의 날짜 데이터를 가저옵니다.
		_, _, ts = self.getDateStrings()

		# 로그 폴더는 날짜형식입니다. (년월일시분초:'%Y%m%d%H%M%S')
		logFolderName = datetime.datetime.fromtimestamp(int(ts)).strftime('%Y%m%d%H%M%S')

		# 로그를 쌓을 경로를 확인하고 폴더를 만들어 줍니다.
		logPath = F"./reports/{logFolderName}"
		pathlib.Path(logPath).mkdir(parents=True, exist_ok=True)

		# 로그파일 경로를 지정합니다.
		logFileName = F"{logPath}/klaytn.log"

		# 로그폴더 경로와 로그파일 경로를 반환합니다.
		return logPath, logFolderName, logFileName



if __name__== "__main__":
	ngle = nGleUtils()

	logPath, logFolderName, logFileName = ngle.getLogfileNameWithPath()

	print(logPath)
	print(logFolderName)
	print(logFileName)

위 스크립트를 실행하면 아래와 같이 출력됩니다.

$ python getLogfileNameWithPath.py 
./reports/20181217152815
20181217152815
./reports/20181217152815/klaytn.log


실행되는 python 파일을 기준으로 하위에 reports 폴더가 생성되고 그 밑에 날짜와 시분초로 구성된 폴더가 생성됩니다.

테스트 실행시마다 시분초로 구성된 로그 파일은 계속 쌓이게 됩니다.


로그폴더나 로그파일 경로를 3가지로 return 받는 이유는.... 하다보니 필요해 졌습니다.


함수에서 확인해 볼만한 내용은 pathlib 정도입니다.

logPath로 받은 폴더가 있다면 그대로 두고 없다면 생성하게 됩니다.

pathlib.Path(logPath).mkdir(parents=True, exist_ok=True)



Comments