qxLib
file_logger_stream.h
Go to the documentation of this file.
1 /**
2 
3  @file file_logger_stream.h
4  @author Khrapov
5  @date 28.07.2021
6  @copyright © Nick Khrapov, 2021. All right reserved.
7 
8 **/
9 #pragma once
10 
12 
13 #include <filesystem>
14 #include <fstream>
15 
16 namespace qx
17 {
18 
19 enum class log_file_policy
20 {
21  append, //!< append all
22  clear_then_uppend, //!< clear file at start, then append
23  time_name, //!< create new file with time name
24 };
25 
26 /**
27 
28  @class file_logger_stream
29  @brief Logger stream for file output
30  @author Khrapov
31  @date 28.07.2021
32 
33 **/
35 {
36 public:
37  /**
38  @brief file_logger_stream object constructor
39  @param bAlwaysFlush - true if need to flush after every output, decreases performance
40  @param eLogFilePolicy - policy to use
41  @param svFileName - log file name
42  **/
44  bool bAlwaysFlush = false,
45  log_file_policy eLogFilePolicy = log_file_policy::append,
46  string_view svFileName = L"application");
47 
48  file_logger_stream(file_logger_stream&&) noexcept = default;
49 
50  virtual ~file_logger_stream() override;
51 
52  // base_logger_stream
53  //
54  virtual void flush() override;
55  virtual void do_log(
56  string_view svMessage,
57  const log_unit& logUnit,
58  const std::vector<logger_color_range>& colors,
59  verbosity eVerbosity) override;
60 
61 private:
62  std::wofstream m_File;
63 };
64 
65 } // namespace qx
66 
Base class for logger streams.
Logger stream for file output.
virtual void do_log(string_view svMessage, const log_unit &logUnit, const std::vector< logger_color_range > &colors, verbosity eVerbosity) override
Proceed stream logging.
virtual void flush() override
Flush stream.
file_logger_stream(bool bAlwaysFlush=false, log_file_policy eLogFilePolicy=log_file_policy::append, string_view svFileName=L"application")
file_logger_stream object constructor
@ clear_then_uppend
clear file at start, then append
@ time_name
create new file with time name
@ append
append all