void zbx_strlog_alloc(int level, char **out, size_t *out_alloc, size_t *out_offset, const char *format, ...)
# include "zbxwinservice.h"
static HANDLE system_log_handle = INVALID_HANDLE_VALUE;
#define LOG_COMPONENT_NAME_LEN 64
static char log_filename[MAX_STRING_LEN];
static int log_type = LOG_TYPE_UNDEFINED;
static zbx_mutex_t log_access = ZBX_MUTEX_NULL;
static int zbx_log_level = LOG_LEVEL_WARNING;
ZBX_THREAD_LOCAL int *zbx_plog_level = &zbx_log_level;
#define LOG_LEVEL_DEC_FAIL -2
#define LOG_LEVEL_DEC_SUCCEED -1
#define LOG_LEVEL_UNCHANGED 0
#define LOG_LEVEL_INC_SUCCEED 1
#define LOG_LEVEL_INC_FAIL 2
static ZBX_THREAD_LOCAL int zbx_log_level_change = LOG_LEVEL_UNCHANGED;
static ZBX_THREAD_LOCAL char log_component_name[LOG_COMPONENT_NAME_LEN + 1];
static int config_log_file_size = -1;
static int get_config_log_file_size(void)
if (-1 != config_log_file_size)
return config_log_file_size;
THIS_SHOULD_NEVER_HAPPEN;
# define LOCK_LOG zbx_mutex_lock(log_access)
# define UNLOCK_LOG zbx_mutex_unlock(log_access)
# define LOCK_LOG lock_log()
# define UNLOCK_LOG unlock_log()
# define STDIN_FILENO _fileno(stdin)
# define STDOUT_FILENO _fileno(stdout)
# define STDERR_FILENO _fileno(stderr)
# define ZBX_DEV_NULL "NUL"
# define dup2(fd1, fd2) _dup2(fd1, fd2)
# define ZBX_DEV_NULL "/dev/null"
static const char *zabbix_get_log_level_ref_string(int loglevel)