14 const config& streamConfig,
18 const std::filesystem::path path =
19 create_folder_and_get_log_file_path(streamConfig.eLogFilePolicy, streamConfig.svFileName);
20 m_File = std::basic_ofstream<char_type>(
23 | (streamConfig.eLogFilePolicy == log_file_policy::clear_then_uppend ? std::ios_base::trunc
24 : std::ios_base::app));
32 if (bufferSize.value > 0)
35 m_Buffer.resize(bytes /
sizeof(char_type));
36 m_File.rdbuf()->pubsetbuf(m_Buffer.data(), m_Buffer.size());
39 if constexpr (std::is_same_v<char_type, wchar_t>)
41 QX_DISABLE_MSVC_WARNINGS(4996);
42 m_File.imbue(std::locale(std::locale(),
new std::codecvt_utf16<char_type, 0x10ffff, std::little_endian>));
43 QX_RESTORE_MSVC_WARNINGS(4996);
47 inline file_logger_stream_ofstream::~file_logger_stream_ofstream()
56 m_File.write(svMessage.data(), svMessage.size());
Base class for all file logger streams.
A category is a class that identifies a particular piece of code. This code can be located in differe...
virtual void do_log(const category &category, verbosity eVerbosity, string_view svMessage) override
Proceed stream logging.
file_logger_stream_ofstream(const config &streamConfig=config(), unit< size_t, units::data > bufferSize={ 8192 *sizeof(char_type), units::data::bytes }) noexcept
file_logger_stream_ofstream object constructor
virtual void do_flush() override
Flush the stream.