Source
xxxxxxxxxx
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
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";
}
}
/******************************************************************************
* *
* Purpose: retrieve a particular attribute of a log value. *
* *
* Return value: upon successful completion return SUCCEED *
* otherwise FAIL *
* *
******************************************************************************/
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;
case ZBX_DC_REQUEST_ITEM_LOG_TIMESTAMP:
*replace_to = zbx_dsprintf(*replace_to, "%d", value.value.log->timestamp);
goto success;
}
/* the following attributes are set only for windows eventlog items */
if (0 != strncmp(item.key_orig, "eventlog[", 9))