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  virtual ~file_logger_stream() override;
49 
50  // base_logger_stream
51  //
52  virtual void flush() override;
53  virtual void do_log(
54  string_view svMessage,
55  const log_unit& logUnit,
56  const std::vector<logger_color_range>& colors,
57  verbosity eVerbosity) override;
58 
59 private:
60  std::wofstream m_File;
61 };
62 
63 } // namespace qx
64 
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