qxLib
base_file_logger_stream.h
Go to the documentation of this file.
1 /**
2 
3  @file base_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 
13 
14 #include <filesystem>
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 base_file_logger_stream
29  @brief Base class for all file logger streams
30  @author Khrapov
31  @date 28.07.2021
32 
33 **/
35 {
37 
38 public:
40  {
41  // policy to use
42  log_file_policy eLogFilePolicy = log_file_policy::append;
43 
44  // log file name
45  string_view svFileName = QXT("qx_app.log");
46  };
47 
48 public:
49  /**
50  @brief file_logger_stream object constructor
51  @param streamConfig - file logger configuration
52  **/
53  base_file_logger_stream(const config& streamConfig) noexcept;
55 
56 protected:
57  /**
58  @brief Create a folder (if required) and get log file path
59  @param eLogFilePolicy - policy to use
60  @param svFileName - log file name
61  @retval - log file path, empty path on error
62  **/
63  static std::filesystem::path create_folder_and_get_log_file_path(
64  log_file_policy eLogFilePolicy,
65  string_view svFileName) noexcept;
66 };
67 
68 } // namespace qx
69 
70 #include <qx/logger/base_file_logger_stream.inl>
@ clear_then_uppend
clear file at start, then append
@ time_name
create new file with time name
@ append
append all
Base class for all file logger streams.
static std::filesystem::path create_folder_and_get_log_file_path(log_file_policy eLogFilePolicy, string_view svFileName) noexcept
Create a folder (if required) and get log file path.
base_file_logger_stream(const config &streamConfig) noexcept
file_logger_stream object constructor
Base class for logger streams.