|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1997.
//
// File: ntlog.cxx
//
// Contents: implemntation of CNtLog
//
// Classes:
//
// Functions:
//
// Notes: loginf.h is where app specific setting should go
//
// History: 8-23-96 benl Created
//
//----------------------------------------------------------------------------
#include <windows.h>
#include <tchar.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
//#include <iostream.h>
#include <ntlog.h>
#include "ntlog.hxx"
// #include "loginf.h" //put any ntlog settings in here // not needed 4 now
// instead
#define LOG_OPTIONS 0
//constants
const int BUFLEN = 255;
//+---------------------------------------------------------------------------
//
// Member: CNtLog::Init
//
// Synopsis: set up logging
//
// Arguments: [lpLogFile] -- log file name
//
// Returns: TRUE if successful
//
// History: 8-23-96 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
BOOL CNtLog::Init(LPCTSTR lpLogFile) { WIN32_FIND_DATA wfd; HANDLE h; INT iNumExt = 0;
if (lpLogFile) { _sntprintf(_lpName,MAX_PATH,_T("%s"),lpLogFile);
//repeat until we have a name that doesn't exist
do { h = ::FindFirstFile(_lpName,&wfd); if ( h != INVALID_HANDLE_VALUE ) { _sntprintf(_lpName,MAX_PATH, _T("%s.%d"),lpLogFile,iNumExt++); ::FindClose(h); } else break; } while (1);
//Now set up the log
_hLog = ::tlCreateLog(_lpName, LOG_OPTIONS ); } else { //set up log with no associated file
_lpName[0] = _T('\0'); _hLog = ::tlCreateLog(NULL, LOG_OPTIONS );
}
if ( !_hLog ) { _ftprintf(stderr, _T("CNtLog::Init: tlCreateLog %s failed\n"), lpLogFile); if (lpLogFile) ::DeleteFile(_lpName); return FALSE; }
//Add main thread as a participant
::tlAddParticipant(_hLog, 0, 0 );
_dwLevel = TLS_TEST;
return TRUE; } //CNtLog::Init
//+---------------------------------------------------------------------------
//
// Member: CNtLog::Error
//
// Synopsis:
//
// Arguments: [fmt] -- format string like any other printf func.
//
// Returns:
//
// History: 8-23-96 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::Error (LPCTSTR fmt, ...) { va_list vl; TCHAR lpBuffer[BUFLEN];
va_start (vl, fmt); _vsntprintf(lpBuffer,BUFLEN,fmt,vl); tlLog(_hLog, TLS_BLOCK | _dwLevel, TEXT(__FILE__),(int)__LINE__, lpBuffer); _tprintf(_T("Error: %s\n"), lpBuffer); va_end (vl); } //CNtLog::Error //CNtLog::Error
//+---------------------------------------------------------------------------
//
// Member: CNtLog::Warn
//
// Synopsis:
//
// Arguments: [fmt] --
//
// Returns:
//
// History: 8-23-96 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::Warn (LPCTSTR fmt, ...) { va_list vl; TCHAR lpBuffer[BUFLEN];
va_start (vl, fmt); _vsntprintf(lpBuffer,BUFLEN,fmt,vl); tlLog(_hLog,TLS_WARN | _dwLevel, TEXT(__FILE__),(int)__LINE__, lpBuffer); _tprintf(_T("Warning: %s\n"), lpBuffer); va_end (vl); } //CNtLog::Warn
//+---------------------------------------------------------------------------
//
// Member: CNtLog::Info
//
// Synopsis:
//
// Arguments: [fmt] --
//
// Returns:
//
// History: 8-23-96 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::Info (LPCTSTR fmt, ...) { va_list vl; TCHAR lpBuffer[BUFLEN];
va_start (vl, fmt); _vsntprintf(lpBuffer,BUFLEN,fmt,vl); tlLog(_hLog,TLS_INFO | _dwLevel, TEXT(__FILE__),(int)__LINE__, lpBuffer); _tprintf(_T("%s\n"), lpBuffer); va_end (vl); } //CNtLog::Info
//+---------------------------------------------------------------------------
//
// Member: CNtLog::Pass
//
// Synopsis:
//
// Arguments: [fmt] --
//
// Returns:
//
// History: 8-26-96 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::Pass( LPCTSTR fmt, ...) { va_list vl; TCHAR lpBuffer[BUFLEN];
va_start (vl, fmt); _vsntprintf(lpBuffer,BUFLEN,fmt,vl); tlLog(_hLog,TLS_PASS | _dwLevel, TEXT(__FILE__),(int)__LINE__, lpBuffer); //_tprintf(_T("Pass: %s\n"), lpBuffer);
va_end (vl); } //CNtLog::Pass
//+---------------------------------------------------------------------------
//
// Member: CNtLog::Fail
//
// Synopsis:
//
// Arguments: [fmt] --
//
// Returns:
//
// History: 8-26-96 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::Fail( LPCTSTR fmt, ...) { va_list vl; TCHAR lpBuffer[BUFLEN];
va_start (vl, fmt); _vsntprintf(lpBuffer,BUFLEN,fmt,vl); tlLog(_hLog,TLS_SEV2 | _dwLevel, TEXT(__FILE__),(int)__LINE__, lpBuffer); _tprintf(_T("Fail: %s\n"), lpBuffer); va_end (vl); } //CNtLog::Fail
//+---------------------------------------------------------------------------
//
// Member: CNtLog::Close
//
// Synopsis:
//
// Arguments: [bDelete] --
//
// Returns:
//
// History: 8-23-96 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::Close(BOOL bDelete) {
assert(_hLog != NULL);
tlReportStats(_hLog); tlRemoveParticipant(_hLog); tlDestroyLog(_hLog);
if (bDelete && _lpName[0] != _T('\0')) ::DeleteFile(_lpName);
//cleanup variables
_lpName[0] = _T('\0'); _hLog = NULL; } //CNtLog::Close
//+---------------------------------------------------------------------------
//
// Member: CNtLog::AttachThread
//
// Synopsis:
//
// Arguments: (none)
//
// Returns:
//
// History: 12-04-1996 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::AttachThread() { tlAddParticipant(_hLog, 0, 0); } //CNtLog::AttachThread
//+---------------------------------------------------------------------------
//
// Member: CNtLog::DetachThread
//
// Synopsis:
//
// Arguments: (none)
//
// Returns:
//
// History: 12-04-1996 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::DetachThread() { tlRemoveParticipant(_hLog); } //CNtLog::DetachThread
//+---------------------------------------------------------------------------
//
// Member: CNtLog::StartVariation
//
// Synopsis:
//
// Arguments: (none)
//
// Returns:
//
// History: 9-18-1997 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::StartVariation() { _dwLevel = TLS_VARIATION; tlStartVariation(_hLog); } // CNtLog::StartVariation
//+---------------------------------------------------------------------------
//
// Member: CNtLog::EndVariation
//
// Synopsis:
//
// Arguments: (none)
//
// Returns:
//
// History: 9-18-1997 benl Created
//
// Notes:
//
//----------------------------------------------------------------------------
VOID CNtLog::EndVariation() { DWORD dwResult; _dwLevel = TLS_TEST; dwResult = tlEndVariation(_hLog); tlLog(_hLog, dwResult | TL_TEST, _T("Variation result")); } // CNtLog::EndVariation
|