#include "zbxcacheconfig.h"
#include "zbxhistory.h"
#include "zbx_item_constants.h"
#include "zbxcachevalue.h"
#include "zbxtime.h"
#include "zbxvariant.h"
static const char *item_logtype_string(unsigned char logtype)
{
switch (logtype)
{
case ITEM_LOGTYPE_INFORMATION:
return "Information";
case ITEM_LOGTYPE_WARNING:
return "Warning";
case ITEM_LOGTYPE_ERROR:
return "Error";
case ITEM_LOGTYPE_FAILURE_AUDIT:
return "Failure Audit";
case ITEM_LOGTYPE_SUCCESS_AUDIT:
return "Success Audit";
case ITEM_LOGTYPE_CRITICAL:
return "Critical";
case ITEM_LOGTYPE_VERBOSE:
return "Verbose";
default:
return "unknown";
}
}
int zbx_dc_get_history_log_value(zbx_uint64_t itemid, char **replace_to, int request, int clock, int ns,
const char *tz)
{
zbx_dc_item_t item;
int ret = FAIL, errcode = FAIL;
zbx_timespec_t ts = {clock, ns};
zbx_history_record_t value;
zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
zbx_dc_config_get_items_by_itemids(&item, &itemid, &errcode, 1);
if (SUCCEED != errcode || ITEM_VALUE_TYPE_LOG != item.value_type)
goto out;
if (SUCCEED != zbx_vc_get_value(itemid, item.value_type, &ts, &value))
goto out;
zbx_vc_flush_stats();
switch (request)
{
case ZBX_DC_REQUEST_ITEM_LOG_DATE:
*replace_to = zbx_strdup(*replace_to, zbx_date2str((time_t)value.value.log->timestamp, tz));
goto success;
case ZBX_DC_REQUEST_ITEM_LOG_TIME:
*replace_to = zbx_strdup(*replace_to, zbx_time2str((time_t)value.value.log->timestamp, tz));
goto success;
case ZBX_DC_REQUEST_ITEM_LOG_AGE:
*replace_to = zbx_strdup(*replace_to, zbx_age2str(time(NULL) - value.value.log->timestamp));
goto success;
}
if (0 != strncmp(item.key_orig, "eventlog[", 9))
goto clean;
switch (request)