/* * Author: Patrick-Christopher Mattulat * Company: Lynar Studios * E-Mail: webmaster@lynarstudios.com * Created: 2020-08-20 * Changed: 2024-09-09 * * */ #ifndef LS_STD_LOGGER_HPP #define LS_STD_LOGGER_HPP #include "LogLevel.hpp" #include #include #include #include #include #include #include /* * @doc: class(name: 'Logger', package: 'io') * */ namespace ls::std::io { class LS_STD_DYNAMIC_GOAL Logger : public ls::std::core::Class { public: explicit Logger(const ::std::shared_ptr &_writer); ~Logger() noexcept override; void debug(const ls::std::core::type::byte_type *_data) const; void error(const ls::std::core::type::byte_type *_data) const; void fatal(const ls::std::core::type::byte_type *_data) const; [[nodiscard]] ls::std::io::LogLevel getLogLevel() const; void hideLogLevel(); void hideTimestamp(); void info(const ls::std::core::type::byte_type *_data) const; void setLogLevel(const ls::std::io::LogLevelValue &_logLevelValue); void showLogLevel(); void showTimestamp(); void trace(const ls::std::core::type::byte_type *_data) const; void warn(const ls::std::core::type::byte_type *_data) const; private: bool displayLogLevel{}; bool displayTimestamp{}; ls::std::io::LogLevel logLevel{}; ::std::shared_ptr writer{}; void _assignWriter(const ::std::shared_ptr &_writer); [[nodiscard]] static ::std::string _buildCharacterChain(size_t _amount); [[nodiscard]] static ::std::string _createFillContent(::std::string_view _text); [[nodiscard]] static ::std::string _generateTimeString(const tm *_localTime); [[nodiscard]] ::std::string _getLogLevelString(const ls::std::io::LogLevel &_logLevel) const; [[nodiscard]] ::std::string _getTimestampString() const; void _log(const ls::std::core::type::byte_type *_data, const ls::std::io::LogLevel &_logLevel) const; [[nodiscard]] static ::std::string _padRight(const ::std::string &_text); }; } #endif