//
//  LogDestination.hpp
//  SwitchboardSDK
//
//  Created by Balázs Kiss on 2022. 07. 29..
//

#pragma once

#include <switchboard/export.h>
#include <switchboard_core/LogLevel.hpp>

#include <string>

namespace switchboard {

/**
 * LogDestination abstract class.
 * @brief Provides an interface to implement platform-specific logging.
 * @details Designed to be subclassed.
 */
class SWITCHBOARDSDK_EXPORT LogDestination {
public:
    /**
     * @brief LogDestination destructor.
     */
    virtual ~LogDestination() = default;

    /**
     * @brief Logs a log message.
     *
     * @param logLevel The log level.
     * @param logMessage The log message.
     */
    virtual void log(LogLevel logLevel, const std::string& logMessage) = 0;
};

}
