Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name :
errlog.cpp
Abstract:
Error logging object implementation. This object will log the link checking error according to the user options (CUserOptions)
Author:
Michael Cheuk (mcheuk)
Project:
Link Checker
Revision History:
--*/
#include "stdafx.h"
#include "errlog.h"
#include "lcmgr.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
// Constant string (TODO: put this in resource)
const CString strHeaderText_c(_T("Start Link Checker")); const CString strFooterText_c(_T("End Link Checker")); const CString strWininetError_c(_T("Internet Error"));
CErrorLog::~CErrorLog( ) /*++
Routine Description:
Destructor.
Arguments:
N/A
Return Value:
N/A
--*/ { if(m_LogFile.m_hFile != CFile::hFileNull) { try { m_LogFile.Close(); } catch(CFileException* pEx) { ASSERT(FALSE); pEx->Delete(); } }
} // CErrorLog::~CErrorLog
BOOL CErrorLog::Create( ) /*++
Routine Description:
Create this object. You must call this before using CErrorLog
Arguments:
N/A
Return Value:
BOOL - TRUE if sucess. FALSE otherwise
--*/ { // Get the user input log filename
const CString& strLogFilename = GetLinkCheckerMgr().GetUserOptions().GetLogFilename();
// Create the file
if(GetLinkCheckerMgr().GetUserOptions().IsLogToFile() && !strLogFilename.IsEmpty()) { if(m_LogFile.Open( strLogFilename, CFile::modeCreate | CFile::modeNoTruncate | CFile::shareDenyWrite | CFile::modeWrite)) { try { m_LogFile.SeekToEnd(); } catch(CFileException* pEx) { ASSERT(FALSE); pEx->Delete(); return FALSE; }
return TRUE; } else { return FALSE; }
}
return TRUE;
} // CErrorLog::Create
void CErrorLog::Write( const CLink& link) /*++
Routine Description:
Write to log
Arguments:
N/A
Return Value:
N/A
--*/ { // Make sure the link is invalid
ASSERT(link.GetState() == CLink::eInvalidHTTP || link.GetState() == CLink::eInvalidWininet);
if(m_LogFile.m_hFile != CFile::hFileNull) { CString strDateTime = link.GetTime().Format("%x\t%X");
CString strLog; if(link.GetState() == CLink::eInvalidHTTP) { strLog.Format(_T("%s\t%s\t%s\t%s\t%d\t%s\t%s\n"), link.GetBase(), m_strBrowser, m_strLanguage, strDateTime, link.GetStatusCode(), link.GetStatusText(), link.GetRelative()); } else if(link.GetState() == CLink::eInvalidWininet) { strLog.Format(_T("%s\t%s\t%s\t%s\t%s\t%s\t%s\n"), link.GetBase(), m_strBrowser, m_strLanguage, strDateTime, strWininetError_c, link.GetStatusText(), link.GetRelative()); }
try { m_LogFile.Write(strLog, strLog.GetLength()); m_LogFile.Flush(); } catch(CFileException* pEx) { ASSERT(FALSE); pEx->Delete(); } }
} // CErrorLog::Write
void CErrorLog::WriteHeader( ) /*++
Routine Description:
Write the log header
Arguments:
N/A
Return Value:
N/A
--*/ { if(m_LogFile.m_hFile != CFile::hFileNull) { CString strLog; strLog.Format(_T("*** %s *** %s\n"), strHeaderText_c, CTime::GetCurrentTime().Format("%x\t%X"));
try { m_LogFile.Write(strLog, strLog.GetLength()); m_LogFile.Flush(); } catch(CFileException* pEx) { ASSERT(FALSE); pEx->Delete(); } }
} // CErrorLog::WriteHeader
void CErrorLog::WriteFooter( ) /*++
Routine Description:
Write the log footer
Arguments:
N/A
Return Value:
N/A
--*/ { if(m_LogFile.m_hFile != CFile::hFileNull) { CString strLog; strLog.Format(_T("*** %s *** %s\n"), strFooterText_c, CTime::GetCurrentTime().Format(_T("%x\t%X")));
try { m_LogFile.Write(strLog, strLog.GetLength()); m_LogFile.Flush(); } catch(CFileException* pEx) { ASSERT(FALSE); pEx->Delete(); } }
} // CErrorLog::WriteFooter
|