즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발/Visual Basic 6.0

[2022.07] Logger 클래스

다물칸 2022. 7. 22. 18:16
728x90
반응형

# 본 저작물은 http://www.enjoydev.net와 저에게 저작권이 있습니다.

 

claLogMgr.cls
0.01MB

 

로그파일 저장 그리고 로그를 표시하기 위한 코딩.... 

프로그램 개발 할 때마다 만들어야 되는 실정...

질려죽겠어서 클래스로 만들었습니다.

 

기본 설정

* 글로벌이나 지역변수로 클래스 변수를 선언합니다.

dim logMgr as claLogMgr

* 폼이나 Sub Main()에 클래스를 세팅해야겠죠.?

Set logMgr = new claLogMgr

* 이어서 기본 세팅 들어갑니다.

logMgr.m_LogPath = app.path & "\Log" '로그 경로 설정
logMgr.m_SetAppTitle = app.ProductName '미리 프로젝트 설정에서 ProductName을 설정하시거나 붙박이로 넣어주세요.

' ESSENTIAL_MESSAGE = 저장하지 않음
' ONLY_CRITICAL_ERROR = CRITICAL 오류만 저장
' INCLUDE_MAJOR_ERROR = CRI를 포함한 MAJOR 오류 저장
' INCLUDE_MINOR_ERROR = CRI, MAJ를 포함한 MINOR 오류 저장
' INCLUDE_WARNING = CRI, MAJ, MIN을 포함한 WARNING 메시지 저장
' INCLUDE_COMMON_MESSAGE = 위에 꺼 다 포함 일반 메시지 저장
' INCLUDE_DEBUG = 위에 꺼 다 포함 DEBUG 메시지까지 저장 
logMgr.m_SetLogLev = INCLUDE_DEBUG  '로그파일 저장 시 어떤 레벨까지 저장할지 지정합니다. 상수는  다음 과 같습니다.

* 위의 상수는 어느레벨을 저장할지에 대한 상수이니 로그에 대한 레벨을 설정할 수 있는 상수도 있어야겠죠. 

* 에러 등급은 개발자 본인이 정하면 됩니다. 로그는 개발자를 위한 것이니까요.

' COMMON_MSG = 일반 메시지 입니다.
' MIN_ERROR = 마이너한 에러.  운영상에 하나도 문제도 없으나, 사용자 실수에 의한 메시지
' MAJ_ERROR = 운영상에 문제가 없지만 RISK적인 메시지
' CRI_ERROR = 운영상에 문제가 무진장 많으니 데몬이면 바로 정지 할 수 밖에 없는 상태
' DEBUG_LOG = 개발자를 위한 디버깅 메시지

 

* 이어서 기본설정 다시 들어갑니다. 

logmgr.m_SetDisplayLev = INCLUDE_DEBUG 
'위에 SetLev은 파일저장.. 이것은 리스트 박스에의 레벨을 지정합니다. 
'꼭 파일로는 저장은 해야 하는데 사용자에게 표시할 필요는 없을 때 사용되죠.

 

* 다음은 리스트 박스 세팅입니다. 폼 로딩 시 Set해야겠죠. 

'lstLog라는 리스트박스가 폼에 생성되어 있어야 합니다. 
Set logMgr.m_ListBox = lstLog 
'chkSchroll이라는 체크박스가 있어야겠죠. 
'이것은 리스트박스의 스크롤이 가장 밑으로 새로고침되는데 체크를 해제하게 되면 
'스크롤을 맘대로 가지고 놀 수 있습니다.
Set logMgr.m_chkSchroll = chkSchroll 
'chkRealTime이라는 체크박스가 있어야 합니다. 
'체크해제하게 되면 리스트박스에 로그가 추가되지 않습니다. 
'파일에만 저장이 되죠. 로그 표시때문에 프로그램 운영이 0.00000000000001초라도 
'느려지게 되면 좀 아니어서 추가하였습니다.
Set logMgr.m_chkRealTime = chkRealTime

 

기본적인 사용방법

* 설정은 다 했다고 생각하고 들어가겠습니다. 

logMgr.addLog "프로그램이 시작되었습니다.",

* 이렇게만 해서 쓰게 되면 기본적인 Optional설정이 되어 사용할 수 있습니다. 완존 기본적인 일반 메시지 추가 시 이렇게 씁니다.

logMgr.addLog "사용자가 맘에 들지 않아요", false, DEBUG_LOG, "그냥", "ProcDebug()", false

* 이게 풀로 파라미터를 쓴 경우입니다. 다음은 파라미터 설명 드릴께요. 

[1] str = 로그 메시지죠. 가장 중요하죠.. 꼭 넣어야 합니다.

[2] bLstAdd = 리스트박스에 넣을 건지에 대한 여부입니다. 만약 리스트박스 세팅을 하지 않았다면 SKIP합니다.

[3] ErrLev = 로그에 대한 에러등급입니다. 기본적으로 COMMON_MSG로 되어 있습니다.

[4] ErrCD = 에러코드를 따로 지정할 수 있습니다. 이것은 에러를 사전에 분류가 되어야 합니다. 가령 네트워크, 디비, 사용자오류 이런식으로 분류를 하여 코드를 따서 관리를 하게 되면 로그관리가 비교적 쉬워집니다. 

[5] sPos = 자바나 웹처럼 몇 번째 줄에서 오류 났는지는 모르지만 인위적으로 어떤 함수에서 에러가 났는지 표현하기 위해서 추가하였습니다. 

[6] bTimeStr = 로그표시 할때 시간정보를 넣게 되는데 이걸 False로 하게 되면 아무것도 넣지 않고 표시 또는 파일저장합니다.

 

* 여기까지는 일반적인 로그를 추가 시.. 다음은 에러로그 추가 시 입니다. 틀린 건 없지만 예외에러 처리죠.

private sub 함수()
   on error goto err

~~~

  exit sub
  err:
      logMgr.ErrLog err.number, err.description, "함수()"
end sub

* 요럴 때 사용합니다. 에러번호와 에러내용 그리고 함수명(때에 따라서는 파라미터도 넣으세요)을 필수적으로 넣어야 합니다.

* 설명은 여기까지 이렇게 설명했는데 사용할 수 없다면 클래스에 대한 학습을 충실히 하시기 바랄께요.

 

요즘은 Logger 패키지 또는 오픈소스가 난무하지만 VB로 개발하던 당시에는 그딴게 존재하지 않았습니다. 

반응형