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 
12 #include <qx/logger/time_string.h>
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 {
36 public:
38  {
39  // policy to use
40  log_file_policy eLogFilePolicy = log_file_policy::append;
41 
42  // log file name
43  string_view svFileName = QXT("qx_app.log");
44  };
45 
46 public:
47  /**
48  @brief file_logger_stream object constructor
49  @param streamConfig - file logger configuration
50  **/
51  base_file_logger_stream(const config& streamConfig) noexcept;
53 
54 protected:
55  /**
56  @brief Create a folder (if required) and get log file path
57  @param eLogFilePolicy - policy to use
58  @param svFileName - log file name
59  @retval - log file path, empty path on error
60  **/
61  static std::filesystem::path create_folder_and_get_log_file_path(
62  log_file_policy eLogFilePolicy,
63  string_view svFileName) noexcept;
64 };
65 
66 } // namespace qx
67 
68 #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.