@brief Represents log format containing flags and date format. This is used internally to start initial log
| 1628 | namespace base { |
| 1629 | /// @brief Represents log format containing flags and date format. This is used internally to start initial log |
| 1630 | class LogFormat : public Loggable { |
| 1631 | public: |
| 1632 | LogFormat(void); |
| 1633 | LogFormat(Level level, const base::type::string_t& format); |
| 1634 | LogFormat(const LogFormat& logFormat); |
| 1635 | LogFormat(LogFormat&& logFormat); |
| 1636 | LogFormat& operator=(const LogFormat& logFormat); |
| 1637 | virtual ~LogFormat(void) {} |
| 1638 | bool operator==(const LogFormat& other); |
| 1639 | |
| 1640 | /// @brief Updates format to be used while logging. |
| 1641 | /// @param userFormat User provided format |
| 1642 | void parseFromFormat(const base::type::string_t& userFormat); |
| 1643 | |
| 1644 | inline Level level(void) const { |
| 1645 | return m_level; |
| 1646 | } |
| 1647 | |
| 1648 | inline const base::type::string_t& userFormat(void) const { |
| 1649 | return m_userFormat; |
| 1650 | } |
| 1651 | |
| 1652 | inline const base::type::string_t& format(void) const { |
| 1653 | return m_format; |
| 1654 | } |
| 1655 | |
| 1656 | inline const std::string& dateTimeFormat(void) const { |
| 1657 | return m_dateTimeFormat; |
| 1658 | } |
| 1659 | |
| 1660 | inline base::type::EnumType flags(void) const { |
| 1661 | return m_flags; |
| 1662 | } |
| 1663 | |
| 1664 | inline bool hasFlag(base::FormatFlags flag) const { |
| 1665 | return base::utils::hasFlag(flag, m_flags); |
| 1666 | } |
| 1667 | |
| 1668 | virtual void log(el::base::type::ostream_t& os) const { |
| 1669 | os << m_format; |
| 1670 | } |
| 1671 | |
| 1672 | protected: |
| 1673 | /// @brief Updates date time format if available in currFormat. |
| 1674 | /// @param index Index where %datetime, %date or %time was found |
| 1675 | /// @param [in,out] currFormat current format that is being used to format |
| 1676 | virtual void updateDateFormat(std::size_t index, base::type::string_t& currFormat) ELPP_FINAL; |
| 1677 | |
| 1678 | /// @brief Updates %level from format. This is so that we dont have to do it at log-writing-time. It uses m_format and m_level |
| 1679 | virtual void updateFormatSpec(void) ELPP_FINAL; |
| 1680 | |
| 1681 | inline void addFlag(base::FormatFlags flag) { |
| 1682 | base::utils::addFlag(flag, &m_flags); |
| 1683 | } |
| 1684 | |
| 1685 | private: |
| 1686 | Level m_level; |
| 1687 | base::type::string_t m_userFormat; |