open-vm-tools 2012.12.26
Macros | Typedefs | Functions
vmtoolsLog.c File Reference
#include "vmtoolsInt.h"
#include <stdio.h>
#include <stdlib.h>
#include <glib/gstdio.h>
#include <unistd.h>
#include <sys/resource.h>
#include <sys/time.h>
#include "glibUtils.h"
#include "log.h"
#include "str.h"
#include "system.h"
Include dependency graph for vmtoolsLog.c:

Macros

#define LOGGING_GROUP   "logging"
#define MAX_DOMAIN_LEN   64
#define DEFAULT_HANDLER   "syslog"
#define SAFE_HANDLER   "std"
#define IS_FATAL(level)   ((level) & G_LOG_FLAG_FATAL)
#define SHOULD_LOG(level, data)
#define CLEAR_LOG_HANDLER(handler)

Typedefs

typedef struct LogHandler LogHandler

Functions

gint VMToolsAsprintf (gchar **string, gchar const *format,...)
void VMTools_ConfigLogging (const gchar *defaultDomain, GKeyFile *cfg, gboolean force, gboolean reset)
void Debug (const char *fmt,...)
void Log (const char *fmt,...)
void LogV (uint32 routing, const char *fmt, va_list args)
void Panic (const char *fmt,...)
void Warning (const char *fmt,...)

Detailed Description

Defines a logging infrastructure for the vmtools library based on glib's logging facilities. Wrap the commonly used logging functions (Log/Warning/Debug), and provides configurability for where logs should go to.

To choose the logging domain for your source file, define G_LOG_DOMAIN before including glib.h.


Macro Definition Documentation

#define CLEAR_LOG_HANDLER (   handler)
Value:
do { \
if ((handler) != NULL) { \
if (handler->logger != NULL) { \
handler->logger->dtor(handler->logger); \
} \
g_free((handler)->domain); \
g_free((handler)->type); \
g_free(handler); \
} \
} while (0)

Clean up the contents of a log handler.

#define DEFAULT_HANDLER   "syslog"

The default handler to use if none is specified by the config data.

#define IS_FATAL (   level)    ((level) & G_LOG_FLAG_FATAL)

Tells whether the given log level is a fatal error.

#define SAFE_HANDLER   "std"

The "failsafe" handler.

#define SHOULD_LOG (   level,
  data 
)
Value:
(IS_FATAL(level) || \
(gLogEnabled && ((data)->mask & (level))))

Tells whether a message should be logged. All fatal messages are logged, regardless of what the configuration says. Otherwise, the log domain's configuration is respected.


Function Documentation

void Debug ( const char *  fmt,
  ... 
)

Logs a message using the G_LOG_LEVEL_DEBUG level.

Parameters:
[in]fmtLog message format.
void Log ( const char *  fmt,
  ... 
)

Logs a message using the G_LOG_LEVEL_INFO level.

Parameters:
[in]fmtLog message format.
void LogV ( uint32  routing,
const char *  fmt,
va_list  args 
)

Logs a message with the given log level.

Translates lib/log levels into glib levels, and sends the message to the log implementation.

Parameters:
[in]levelLog level.
[in]fmtLog message format.
[in]argsLog message arguments.
void Panic ( const char *  fmt,
  ... 
)

Logs a message using the G_LOG_LEVEL_ERROR level. In the default configuration, this will cause the application to terminate and, if enabled, to dump core.

Parameters:
[in]fmtLog message format.
gint VMToolsAsprintf ( gchar **  string,
gchar const *  format,
  ... 
)

glib-based version of Str_Asprintf().

Parameters:
[out]stringWhere to store the result.
[in]formatString format.
[in]...String arguments.
Returns:
Number of bytes printed.
void Warning ( const char *  fmt,
  ... 
)

Logs a message using the G_LOG_LEVEL_WARNING level.

Parameters:
[in]fmtLog message format.