#pragma once
#include <myapp/logging/logger.h>
#include <memory>

namespace myapp::logging {

class text_logger final : public logger
{
public:
    explicit text_logger(std::string const& filename);
    ~text_logger();

    void debug(std::string const& tag, std::string const& message) noexcept override;
    void info(std::string const& tag, std::string const& message) noexcept override;
    void notice(std::string const& tag, std::string const& message) noexcept override;
    void warning(std::string const& tag, std::string const& message) noexcept override;
    void error(std::string const& tag, std::string const& message) noexcept override;
    void critical(std::string const& tag, std::string const& message) noexcept override;
    void alert(std::string const& tag, std::string const& message) noexcept override;
    void emergency(std::string const& tag, std::string const& message) noexcept override;

private:
    struct impl;
    std::unique_ptr<impl> impl_;
};

} /* namespace myapp::logging */
