/*
 * Copyright (c) 2022 Huawei Technologies Co.,Ltd.
 *
 * openGauss is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *
 *          http://license.coscl.org.cn/MulanPSL2
 *
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 * ---------------------------------------------------------------------------------------
 *
 * dss_log.cpp
 *  write log for dss
 *
 *
 * IDENTIFICATION
 *        src/gausskernel/storage/dss/dss_log.cpp
 *
 * ---------------------------------------------------------------------------------------
 */

#include "utils/palloc.h"
#include "utils/elog.h"
#include "utils/memutils.h"
#include "knl/knl_thread.h"
#include "storage/dss/dss_api_def.h"
#include "storage/dss/dss_log.h"
#include "storage/dss/dss_adaptor.h"
#include "ddes/dms/ss_init.h"
#include "knl/knl_instance.h"

#define DSS_LOG_DEBUG 255

void DSSInitLogger()
{
    knl_instance_attr_dms *dms_attr = &g_instance.attr.attr_storage.dms_attr;
    logger_param_t log_param;
    int ret = DSS_SUCCESS;
    log_param.log_level = (unsigned int)(dms_attr->sslog_level);
    log_param.log_backup_file_count = (unsigned int)(dms_attr->sslog_backup_file_count);
    log_param.log_max_file_size = ((uint64)(dms_attr->sslog_max_file_size)) * 1024;

    GetSSLogPath(log_param.log_home);
    if (IsInitdb) {
        ret = dss_call_init_logger(log_param.log_home, DSS_LOG_DEBUG, log_param.log_backup_file_count, log_param.log_max_file_size);
    } else {
        ret = dss_call_init_logger(log_param.log_home, log_param.log_level, log_param.log_backup_file_count, log_param.log_max_file_size);
    }
    
    if (ret != DSS_SUCCESS) {
        ereport(FATAL,(errmsg("failed to init dss looger")));
    }
}

void DSSRefreshLogger(char *log_field, unsigned long long *value)
{
    dss_call_refresh_logger(log_field, value);
}