# class utils::LogReader

## Overview

Log - accumulate typed messages reported by the application. Includes percentage value in range <0,1>. More…

    #include <LogReader.h>

    class LogReader {
    public:
        // construction

        LogReader();
        LogReader(const LogReader&);
        LogReader(LogReader&&);
        ~LogReader();

        // methods

        LogReader& operator=(const LogReader&);
        LogReader& operator=(LogReader&&);
        bool IsPercentageEnabled() const;
        float GetPercentage() const;
        void SetOutputStream(std::ostream* output_log_stream);
        std::ostream* GetOutputStream();
        std::vector<std::shared_ptr<LogEntry>> ViewUnread(const utils::EnumFlags<LogEntry::Type>& types = LogEntry::GetWECTypes()) const;
        std::string ViewUnreadToString(const utils::EnumFlags<LogEntry::Type>& types = LogEntry::GetIWECTypes()) const;
        std::vector<std::shared_ptr<LogEntry>> ReadUnread(const utils::EnumFlags<LogEntry::Type>& types);

    protected:
        // fields

        std::ostream* output_stream_ = nullptr;
        ProgressPercentage percentage_;
        std::mutex percentage_access_;
        std::vector<std::shared_ptr<LogEntry>> log_entries_;
        std::mutex log_access_;
    };

## Detailed Documentation

Log - accumulate typed messages reported by the application. Includes percentage value in range <0,1>.

Is not a singleton. Multiple individual components of the application may have their own log.

Includes the functionality to inform about progress of processing functions. Whenever a function is run, this class provides thread-safe getters which can be used to inform user about current state of the function.

### Fields

    std::vector<std::shared_ptr<LogEntry>> log_entries_

Saved log entries.

    std::mutex log_access_

mutex to ensure thread safety of the Log.

### Methods

    bool IsPercentageEnabled() const

Returns true if percentage is currently enabled. Some processing functions may not support percentage values.

    float GetPercentage() const

Returns current percentage value of progress in range 0, 1.

    void SetOutputStream(std::ostream* output_log_stream)

Allows user to specify custom output stream to receive verbose information about progress. Default value is nullptr.

    std::ostream* GetOutputStream()

Returns pointer to currently active output stream.

    std::vector<std::shared_ptr<LogEntry>> ViewUnread(const utils::EnumFlags<LogEntry::Type>& types = LogEntry::GetWECTypes()) const

Get all unread messages specified by their types and return them.

    std::string ViewUnreadToString(const utils::EnumFlags<LogEntry::Type>& types = LogEntry::GetIWECTypes()) const

Get all unread messages specified by their types and return them and output as std::string.

    std::vector<std::shared_ptr<LogEntry>> ReadUnread(const utils::EnumFlags<LogEntry::Type>& types)

Get all unread messages specified by their types, set them to read, and return them.