greenplumn CLogger 源码

  • 2022-08-18
  • 浏览 (357)

greenplumn CLogger 代码

文件路径:/src/backend/gporca/libgpos/include/gpos/error/CLogger.h

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2010 Greenplum, Inc.
//
//	@filename:
//		CLogger.h
//
//	@doc:
//		Partial implementation of interface class for logging
//---------------------------------------------------------------------------
#ifndef GPOS_CLogger_H
#define GPOS_CLogger_H

#include "gpos/error/ILogger.h"
#include "gpos/string/CWStringStatic.h"

namespace gpos
{
//---------------------------------------------------------------------------
//	@class:
//		CLogger
//
//	@doc:
//		Partial implementation of interface for abstracting logging primitives.
//
//---------------------------------------------------------------------------
class CLogger : public ILogger
{
	friend class ILogger;
	friend class CErrorHandlerStandard;

private:
	// buffer used to construct the log entry
	WCHAR m_entry[GPOS_LOG_ENTRY_BUFFER_SIZE];

	// buffer used to construct the log entry
	WCHAR m_msg[GPOS_LOG_MESSAGE_BUFFER_SIZE];

	// buffer used to retrieve system error messages
	CHAR m_retrieved_msg[GPOS_LOG_MESSAGE_BUFFER_SIZE];

	// entry buffer wrapper
	CWStringStatic m_entry_wrapper;

	// message buffer wrapper
	CWStringStatic m_msg_wrapper;

	// error logging information level
	ErrorInfoLevel m_info_level;

	// log message
	void Log(const WCHAR *msg, ULONG severity, const CHAR *filename,
			 ULONG line);

	// format log message
	void Format(const WCHAR *msg, ULONG severity, const CHAR *filename,
				ULONG line);

	// add date to message
	void AppendDate();

	// report logging failure
	void ReportFailure();

protected:
	// accessor for system error buffer
	CHAR *
	Msg()
	{
		return m_retrieved_msg;
	}

public:
	CLogger(const CLogger &) = delete;

	// ctor
	explicit CLogger(ErrorInfoLevel info_level = ILogger::EeilMsgHeaderStack);

	// dtor
	~CLogger() override;

	// error level accessor
	ErrorInfoLevel
	InfoLevel() const override
	{
		return m_info_level;
	}

	// set error info level
	void
	SetErrorInfoLevel(ErrorInfoLevel info_level) override
	{
		m_info_level = info_level;
	}

};	// class CLogger
}  // namespace gpos

#endif	// !GPOS_CLogger_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CAutoExceptionStack 源码

greenplumn CAutoTrace 源码

greenplumn CErrorContext 源码

greenplumn CErrorHandler 源码

greenplumn CErrorHandlerStandard 源码

greenplumn CException 源码

greenplumn CLoggerStream 源码

greenplumn CLoggerSyslog 源码

greenplumn CMessage 源码

greenplumn CMessageRepository 源码

0  赞