Loading...
Searching...
No Matches
ASSA::Logger_Impl Class Referenceabstract

`#include <Logger_Impl.h>`

Inheritance diagram for ASSA::Logger_Impl:

## Public Member Functions

| Logger_Impl ()
virtual | ~Logger_Impl ()
void | enable_group (Group g_)
void | disable_group (Group g_)
void | enable_groups (u_long g_)
void | disable_groups (u_long g_)
void | enable_all_groups (void)
void | disable_all_groups (void)
bool | group_enabled (Group g_) const
void | enable_timestamp (void)
void | disable_timestamp (void)
bool | timestamp_enabled (void) const
void | set_timezone (int zone_)
void | set_indent_step (u_short step_)
u_short | get_indent_step (void) const
virtual int | log_open (u_long groups_)
| Open StdErr Logger.
virtual int | log_open (const char *logfname_, u_long groups_, u_long maxsize_)
| Open File Logger.
virtual int | log_open (const char *appname_, const char *logfname_, u_long groups_, u_long maxsize_, Reactor *reactor_)
| Open connection with Log Server.
virtual int | log_close (void)=0
virtual void | log_resync (void)
virtual int | log_msg (Group g_, size_t indent_level_, const string &func_name_, size_t expected_sz_, const char *fmt_, va_list)=0
virtual int | log_func (Group g_, size_t indent_level_, const string &func_name_, marker_t type_)=0

## Static Public Attributes

static const unsigned int | LOGGER_MAXLINE = 6660
| Maximum length of the formatted message.

## Protected Member Functions

virtual u_short | add_timestamp (ostream &sink_)
virtual u_short | indent_func_name (ostream &sink_, const string &funcname_, size_t indent_level_, marker_t type_)
char * | format_msg (size_t expected_sz_, const char *fmt_, va_list vap_, bool &release_)
| Format and put the message in the buffer.

## Protected Attributes

u_short | m_indent_step
| Indentation step.
u_long | m_groups
| Enabled groups.
string | m_logfname
| Log file name.
bool | m_tmflg
| Timestamp on/off flag.
int | m_tz
| Timezone: 0-GMT, 1-Local.

## Static Protected Attributes

static char | m_msgbuf [LOGGER_MAXLINE]
| Static buffer for formatted message.

## Detailed Description

Definition at line 141 of file Logger_Impl.h.

## Constructor & Destructor Documentation

## Logger_Impl()

ASSA::Logger_Impl::Logger_Impl | ( |  | ) |

inline

Definition at line 252 of file Logger_Impl.h.

: m_indent_step (1),
m_groups (0),
m_tmflg (false),
m_tz (1)
{
/* no-op */
}
ASSA::Logger_Impl::m_indent_step
u_short m_indent_step
Indentation step.
Definition Logger_Impl.h:236
ASSA::Logger_Impl::m_tz
int m_tz
Timezone: 0-GMT, 1-Local.
Definition Logger_Impl.h:248
ASSA::Logger_Impl::m_groups
u_long m_groups
Enabled groups.
Definition Logger_Impl.h:239
ASSA::Logger_Impl::m_tmflg
bool m_tmflg
Timestamp on/off flag.
Definition Logger_Impl.h:245

References m_groups, m_indent_step, m_tmflg, and m_tz.

## ~Logger_Impl()

virtual ASSA::Logger_Impl::~Logger_Impl | ( |  | ) |

inline virtual

Definition at line 153 of file Logger_Impl.h.

{ /* empty */ }

## Member Function Documentation

## add_timestamp()

u_short Logger_Impl::add_timestamp | ( | ostream & | sink_ | ) |

protected virtual

Definition at line 34 of file Logger_Impl.cpp.

{
/*--- 'DD/MM/CC HH:MM:SS.MMMM ' - 23 chars ---*/
u_short bytecount = 0;
if (timestamp_enabled ()) {
TimeVal tv = TimeVal::gettimeofday ();
tv.tz (m_tz);
sink_ << tv.fmtString ("%m/%d/%Y %H:%M:%S") << '.';
char oldfill = sink_.fill('0');
sink_ << std::setw (3) << (tv.msec () % 1000000)/1000 << ' ';
sink_.fill (oldfill);
bytecount = 23;
}
return bytecount;
}
u_short
unsigned short u_short
Definition Logger_Impl.h:39
ASSA::Logger_Impl::timestamp_enabled
bool timestamp_enabled(void) const
Definition Logger_Impl.h:168
ASSA::TimeVal::tz
void tz(int tz_)
Set timezone.
Definition TimeVal.h:81
ASSA::TimeVal::fmtString
string fmtString(const char *fmt_=NULL) const
Format timeval structure into readable format.
Definition TimeVal.cpp:146
ASSA::TimeVal::gettimeofday
static TimeVal gettimeofday()
Shields off underlying OS differences in getting current time.
Definition TimeVal.cpp:44
ASSA::TimeVal::msec
void msec(long msec_)
Set microseconds.
Definition TimeVal.h:70

References ASSA::TimeVal::fmtString(), ASSA::TimeVal::gettimeofday(), m_tz, ASSA::TimeVal::msec(), timestamp_enabled(), and ASSA::TimeVal::tz().

Referenced by ASSA::FileLogger::log_func(), ASSA::RemoteLogger::log_func(), ASSA::StdOutLogger::log_func(), ASSA::FileLogger::log_msg(), ASSA::RemoteLogger::log_msg(), and ASSA::StdOutLogger::log_msg().

## disable_all_groups()

void ASSA::Logger_Impl::disable_all_groups | ( | void |  | ) |

inline

Definition at line 162 of file Logger_Impl.h.

{ m_groups = 0; }

References m_groups.

## disable_group()

void ASSA::Logger_Impl::disable_group | ( | Group | g_ | ) |

inline

Definition at line 156 of file Logger_Impl.h.

{ m_groups &= ~g_; }

References m_groups.

## disable_groups()

void ASSA::Logger_Impl::disable_groups | ( | u_long | g_ | ) |

inline

Definition at line 159 of file Logger_Impl.h.

{ m_groups &= ~g_; }

References m_groups.

## disable_timestamp()

void ASSA::Logger_Impl::disable_timestamp | ( | void |  | ) |

inline

Definition at line 167 of file Logger_Impl.h.

{ m_tmflg = false; }

References m_tmflg.

## enable_all_groups()

void ASSA::Logger_Impl::enable_all_groups | ( | void |  | ) |

inline

Definition at line 161 of file Logger_Impl.h.

{ m_groups = ASSA::ALL; }
ASSA::ALL
@ ALL
All messages: library + application.
Definition LogMask.h:62

References ASSA::ALL, and m_groups.

## enable_group()

void ASSA::Logger_Impl::enable_group | ( | Group | g_ | ) |

inline

Definition at line 155 of file Logger_Impl.h.

{ m_groups |= g_; }

References m_groups.

## enable_groups()

void ASSA::Logger_Impl::enable_groups | ( | u_long | g_ | ) |

inline

Definition at line 158 of file Logger_Impl.h.

{ m_groups |= g_; }

References m_groups.

## enable_timestamp()

void ASSA::Logger_Impl::enable_timestamp | ( | void |  | ) |

inline

Definition at line 166 of file Logger_Impl.h.

{ m_tmflg = true; }

References m_tmflg.

## format_msg()

char * Logger_Impl::format_msg | ( | size_t | expected_sz_,
|  | const char * | fmt_,
|  | va_list | vap_,
|  | bool & | release_ )

protected

Format and put the message in the buffer.

If expected size is smaller then LOGGER_MAXLINE, formatted message is written to the static buffer and release_ is set to false. Otherwise, this function allocates a buffer on the heap big enough to hold the message and set release_ to true. In this case caller is responsible for releasing the memory by calling delete [].

Parameters

  expected_sz_ | Expected size of the formatted message
  fmt_ | printf()-like format string
  vap_ | variable argument parameters list
  release_ | [OUT] if true, caller is responsible for memory deallocation.

Returns
  Pointer to the formatted message buffer. If formatting failed, NULL is returned.

Definition at line 85 of file Logger_Impl.cpp.

{
char* msg = m_msgbuf; // Use internal buffer
int ret = 0;
release_ = false;
expected_sz_++; // Expected size includes '\0'
if (expected_sz_ >= LOGGER_MAXLINE) { // Allocate temporary buffer
msg = new char [expected_sz_];
release_ = true;
}
ret = ::vsnprintf (msg, expected_sz_, fmt_, vap_);
#if NEVER
if (ret < 0) {
std::cout << "Logger_Impl: format_mg(expected_sz=" << expected_sz_
<< ")=-1 failed! errno=" << errno << " ("
<< strerror(errno) << "\n" << std::flush;
}
#endif
return (ret < 0 ? NULL : msg);
}
ASSA::Logger_Impl::m_msgbuf
static char m_msgbuf[LOGGER_MAXLINE]
Static buffer for formatted message.
Definition Logger_Impl.h:233
ASSA::Logger_Impl::LOGGER_MAXLINE
static const unsigned int LOGGER_MAXLINE
Maximum length of the formatted message.
Definition Logger_Impl.h:149

References LOGGER_MAXLINE, and m_msgbuf.

Referenced by ASSA::FileLogger::log_msg(), ASSA::RemoteLogger::log_msg(), and ASSA::StdOutLogger::log_msg().

## get_indent_step()

u_short ASSA::Logger_Impl::get_indent_step | ( | void |  | ) | const

inline

Definition at line 172 of file Logger_Impl.h.

{ return m_indent_step; }

References m_indent_step.

## group_enabled()

bool ASSA::Logger_Impl::group_enabled | ( | Group | g_ | ) | const

inline

Definition at line 164 of file Logger_Impl.h.

{ return (m_groups & g_); }

References m_groups.

Referenced by ASSA::FileLogger::log_func(), ASSA::RemoteLogger::log_func(), ASSA::StdOutLogger::log_func(), ASSA::FileLogger::log_msg(), ASSA::RemoteLogger::log_msg(), and ASSA::StdOutLogger::log_msg().

## indent_func_name()

u_short Logger_Impl::indent_func_name | ( | ostream & | sink_,
|  | const string & | funcname_,
|  | size_t | indent_level_,
|  | marker_t | type_ )

protected virtual

Definition at line 53 of file Logger_Impl.cpp.

{
u_short bytecount = 0;
if (func_name_.size ()) {
u_int i = 1;
while (i < indent_level_) {
sink_ << '|';
for (u_short j = 0; j < m_indent_step-1; j++) {
sink_ << ' ';
}
i++;
}
if (type_ == FUNC_ENTRY) {
sink_ << '/' << func_name_ << " ";
}
else if (type_ == FUNC_EXIT) {
sink_ << '\\' << func_name_ << " ";
}
else if (type_ == FUNC_MSG) {
sink_ << '[' << func_name_ << "] ";
}
bytecount += indent_level_ * m_indent_step + func_name_.size () + 3;
}
return bytecount;
}
u_int
unsigned int u_int
Definition Logger_Impl.h:40
ASSA::FUNC_ENTRY
@ FUNC_ENTRY
Definition LogMask.h:69
ASSA::FUNC_MSG
@ FUNC_MSG
Definition LogMask.h:68
ASSA::FUNC_EXIT
@ FUNC_EXIT
Definition LogMask.h:70

References ASSA::FUNC_ENTRY, ASSA::FUNC_EXIT, ASSA::FUNC_MSG, and m_indent_step.

Referenced by ASSA::FileLogger::log_func(), ASSA::RemoteLogger::log_func(), ASSA::StdOutLogger::log_func(), ASSA::FileLogger::log_msg(), ASSA::RemoteLogger::log_msg(), and ASSA::StdOutLogger::log_msg().

## log_close()

virtual int ASSA::Logger_Impl::log_close | ( | void |  | ) |

pure virtual

Implemented in ASSA::FileLogger, ASSA::RemoteLogger, and ASSA::StdOutLogger.

## log_func()

virtual int ASSA::Logger_Impl::log_func | ( | Group | g_,
|  | size_t | indent_level_,
|  | const string & | func_name_,
|  | marker_t | type_ )

pure virtual

Implemented in ASSA::FileLogger, ASSA::RemoteLogger, and ASSA::StdOutLogger.

## log_msg()

virtual int ASSA::Logger_Impl::log_msg | ( | Group | g_,
|  | size_t | indent_level_,
|  | const string & | func_name_,
|  | size_t | expected_sz_,
|  | const char * | fmt_,
|  | va_list | )

pure virtual

Implemented in ASSA::FileLogger, ASSA::RemoteLogger, and ASSA::StdOutLogger.

## log_open() [1/3]

int ASSA::Logger_Impl::log_open | ( | const char * | appname_,
|  | const char * | logfname_,
|  | u_long | groups_,
|  | u_long | maxsize_,
|  | Reactor * | reactor_ )

inline virtual

Open connection with Log Server.

Reimplemented in ASSA::RemoteLogger.

Definition at line 281 of file Logger_Impl.h.

{
errno = ENOSYS;
return -1;
}

## log_open() [2/3]

int ASSA::Logger_Impl::log_open | ( | const char * | logfname_,
|  | u_long | groups_,
|  | u_long | maxsize_ )

inline virtual

Open File Logger.

Reimplemented in ASSA::FileLogger.

Definition at line 271 of file Logger_Impl.h.

{
errno = ENOSYS;
return -1;
}

## log_open() [3/3]

int ASSA::Logger_Impl::log_open | ( | u_long | groups_ | ) |

inline virtual

Open StdErr Logger.

Reimplemented in ASSA::StdOutLogger.

Definition at line 263 of file Logger_Impl.h.

{
errno = ENOSYS;
return -1;
}

## log_resync()

virtual void ASSA::Logger_Impl::log_resync | ( | void |  | ) |

inline virtual

Reimplemented in ASSA::FileLogger, ASSA::RemoteLogger, and ASSA::StdOutLogger.

Definition at line 190 of file Logger_Impl.h.

{ /* empty */ }

## set_indent_step()

void ASSA::Logger_Impl::set_indent_step | ( | u_short | step_ | ) |

inline

Definition at line 171 of file Logger_Impl.h.

{ m_indent_step = step_; }

References m_indent_step.

## set_timezone()

void ASSA::Logger_Impl::set_timezone | ( | int | zone_ | ) |

inline

Definition at line 169 of file Logger_Impl.h.

{ m_tz = zone_; }

References m_tz.

## timestamp_enabled()

bool ASSA::Logger_Impl::timestamp_enabled | ( | void |  | ) | const

inline

Definition at line 168 of file Logger_Impl.h.

{ return m_tmflg; }

References m_tmflg.

Referenced by add_timestamp().

## Member Data Documentation

## LOGGER_MAXLINE

const unsigned int ASSA::Logger_Impl::LOGGER_MAXLINE = 6660

static

Maximum length of the formatted message.

The size is selected based on the maximum number of bytes transmitted through Socketbuf which is 1416. This is at most the bytes dumped with MemDump - (1416/16 + 2) * 74 = 6660. See MemDump.cpp comments for details.

Definition at line 149 of file Logger_Impl.h.

Referenced by format_msg().

## m_groups

u_long ASSA::Logger_Impl::m_groups

protected

Enabled groups.

Definition at line 239 of file Logger_Impl.h.

Referenced by disable_all_groups(), disable_group(), disable_groups(), ASSA::FileLogger::dump(), enable_all_groups(), enable_group(), enable_groups(), group_enabled(), ASSA::FileLogger::log_close(), ASSA::FileLogger::log_open(), ASSA::RemoteLogger::log_open(), ASSA::StdOutLogger::log_open(), and Logger_Impl().

## m_indent_step

u_short ASSA::Logger_Impl::m_indent_step

protected

Indentation step.

Definition at line 236 of file Logger_Impl.h.

Referenced by ASSA::FileLogger::dump(), get_indent_step(), indent_func_name(), Logger_Impl(), and set_indent_step().

## m_logfname

string ASSA::Logger_Impl::m_logfname

protected

Log file name.

Definition at line 242 of file Logger_Impl.h.

Referenced by ASSA::FileLogger::dump(), ASSA::RemoteLogger::handle_close(), ASSA::FileLogger::handle_rollover(), ASSA::FileLogger::log_close(), ASSA::FileLogger::log_open(), and ASSA::RemoteLogger::log_open().

## m_msgbuf

char Logger_Impl::m_msgbuf

static protected

Static buffer for formatted message.

Definition at line 233 of file Logger_Impl.h.

Referenced by format_msg().

## m_tmflg

bool ASSA::Logger_Impl::m_tmflg

protected

Timestamp on/off flag.

Definition at line 245 of file Logger_Impl.h.

Referenced by disable_timestamp(), ASSA::FileLogger::dump(), enable_timestamp(), Logger_Impl(), and timestamp_enabled().

## m_tz

int ASSA::Logger_Impl::m_tz

protected

Timezone: 0-GMT, 1-Local.

Definition at line 248 of file Logger_Impl.h.

Referenced by add_timestamp(), Logger_Impl(), and set_timezone().

The documentation for this class was generated from the following files:

- Logger_Impl.h
- Logger_Impl.cpp