open-vm-tools 12.4.0
Macros | Typedefs | Enumerations | 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 "vmware/tools/log.h"
#include "vmware/tools/guestrpc.h"
#include "vmware/guestrpc/tclodefs.h"
#include "err.h"
#include "logToHost.h"
#include "vthreadBase.h"
#include "hostinfo.h"
#include "vm_tools_version.h"
#include "buildNumber.h"
#include "vm_product.h"
#include "util.h"

Macros

#define LOGGING_GROUP   "logging"
 
#define MAX_DOMAIN_LEN   (64)
 
#define DEFAULT_MAX_CACHE_ENTRIES   (4*1024)
 
#define DEFAULT_HANDLER   "file+"
 
#define DEFAULT_LOGFILE_NAME_PREFIX   "/var/log/vmware"
 
#define SAFE_HANDLER   "std"
 
#define STD_HANDLER   "std"
 
#define IS_FATAL(level)   ((level) & G_LOG_FLAG_FATAL)
 
#define SHOULD_LOG(level, data)
 
#define CLEAR_LOG_HANDLER(handler)
 
#define VMX_LOG_CMD   "log "
 
#define VMX_LOG_CMD_LEN   (sizeof(VMX_LOG_CMD) - 1)
 
#define LOG_HEADER_MAX_ENTRIES   2
 

Typedefs

typedef struct LogHandler LogHandler
 
typedef struct LogEntry LogEntry
 

Enumerations

enum  RpcMode { RPC_OFF = 0, RPC_GUEST_LOG_TEXT, RPC_LOG_FALLBACK }
 

Functions

void Debug (const char *fmt,...)
 
gint VMToolsAsprintf (gchar **string, gchar const *format,...)
 
gchar * VMTools_GetTimeAsString (void)
 
void VMTools_ConfigLogToStdio (const gchar *domain)
 
void VMTools_ConfigLogging (const gchar *defaultDomain, GKeyFile *cfg, gboolean force, gboolean reset)
 
void VMTools_AcquireLogStateLock (void)
 
void VMTools_ReleaseLogStateLock (void)
 
void VMTools_SuspendLogIO ()
 
void VMTools_ResumeLogIO ()
 
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,...)
 
void WarningToHost (const char *fmt,...)
 
void WarningToGuest (const char *fmt,...)
 
gboolean VMTools_ChangeLogFilePath (const gchar *delimiter, const gchar *appendString, const gchar *domain, GKeyFile *conf)
 
void VMTools_UseVmxGuestLog (const gchar *appName)
 
void VMTools_SetupVmxGuestLog (gboolean refreshRpcChannel, GKeyFile *cfg, const gchar *level)
 
void VMTools_TeardownVmxGuestLog (void)
 
void VMTools_Log (LogWhere where, GLogLevelFlags level, const gchar *domain, const gchar *fmt,...)
 
void VMTools_VmxLog (RpcChannel *chan, const gchar *fmt,...)
 
void VMTools_VmxLogThrottled (uint32 *count, RpcChannel *chan, const gchar *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.

All fatal error messages will go to the 'syslog' handler no matter what handler has been configured.

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)->confData); \
g_free(handler); \
} \
} while (0)

Clean up the contents of a log handler.

#define DEFAULT_HANDLER   "file+"

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

#define DEFAULT_LOGFILE_NAME_PREFIX   "/var/log/vmware"

The default logfile location.

#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))))
#define IS_FATAL(level)
Definition: vmtoolsLog.c:102

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.

Typedef Documentation

typedef struct LogEntry LogEntry

Structure for caching a log message

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.
void WarningToGuest ( const char *  fmt,
  ... 
)

Logs a message at the guest side using the G_LOG_LEVEL_WARNING level

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

Logs a message at the host side using the G_LOG_LEVEL_WARNING level

Parameters
[in]fmtLog message format.