diff --git a/include/spdlog/sinks/basic_file_sink-inl.h b/include/spdlog/sinks/basic_file_sink-inl.h new file mode 100644 index 00000000..edcee4fa --- /dev/null +++ b/include/spdlog/sinks/basic_file_sink-inl.h @@ -0,0 +1,39 @@ +// Copyright(c) 2015-present Gabi Melman & spdlog contributors. +// Distributed under the MIT License (http://opensource.org/licenses/MIT) + +#pragma once + +#include "spdlog/common.h" +#include "spdlog/details/os.h" + +namespace spdlog { +namespace sinks { + +template +SPDLOG_INLINE basic_file_sink::basic_file_sink(const filename_t &filename, bool truncate) +{ + file_helper_.open(filename, truncate); +} + +template +SPDLOG_INLINE const filename_t &basic_file_sink::filename() const +{ + return file_helper_.filename(); +} + +template +SPDLOG_INLINE void basic_file_sink::sink_it_(const details::log_msg &msg) +{ + fmt::memory_buffer formatted; + sink::formatter_->format(msg, formatted); + file_helper_.write(formatted); +} + +template +SPDLOG_INLINE void basic_file_sink::flush_() +{ + file_helper_.flush(); +} + +} // namespace sinks +} // namespace spdlog diff --git a/include/spdlog/sinks/basic_file_sink.h b/include/spdlog/sinks/basic_file_sink.h index 249a6f31..95a7a336 100644 --- a/include/spdlog/sinks/basic_file_sink.h +++ b/include/spdlog/sinks/basic_file_sink.h @@ -23,28 +23,12 @@ template class basic_file_sink final : public base_sink { public: - explicit basic_file_sink(const filename_t &filename, bool truncate = false) - { - file_helper_.open(filename, truncate); - } - - const filename_t &filename() const - { - return file_helper_.filename(); - } + explicit basic_file_sink(const filename_t &filename, bool truncate = false); + const filename_t &filename() const; protected: - void sink_it_(const details::log_msg &msg) override - { - fmt::memory_buffer formatted; - sink::formatter_->format(msg, formatted); - file_helper_.write(formatted); - } - - void flush_() override - { - file_helper_.flush(); - } + void sink_it_(const details::log_msg &msg) override; + void flush_() override; private: details::file_helper file_helper_; @@ -71,3 +55,7 @@ inline std::shared_ptr basic_logger_st(const std::string &logger_name, c } } // namespace spdlog + +#ifdef SPDLOG_HEADER_ONLY +#include "basic_file_sink-inl.h" +#endif \ No newline at end of file diff --git a/src/spdlog.cpp b/src/spdlog.cpp index fd321535..ebe2fc9f 100644 --- a/src/spdlog.cpp +++ b/src/spdlog.cpp @@ -36,6 +36,11 @@ template spdlog::logger::logger(std::string name, sinks_init_list::iterator begi template class spdlog::sinks::base_sink; template class spdlog::sinks::base_sink; +#include "spdlog/sinks/basic_file_sink.h" +#include "spdlog/sinks/basic_file_sink-inl.h" +template class spdlog::sinks::basic_file_sink; +template class spdlog::sinks::basic_file_sink; + #include "spdlog/sinks/rotating_file_sink.h" #include "spdlog/sinks/rotating_file_sink-inl.h" template class spdlog::sinks::rotating_file_sink; diff --git a/tests/includes.h b/tests/includes.h index 26517922..85d4a1bd 100644 --- a/tests/includes.h +++ b/tests/includes.h @@ -20,3 +20,4 @@ #include "spdlog/sinks/ostream_sink.h" #include "spdlog/sinks/rotating_file_sink.h" #include "spdlog/sinks/stdout_color_sinks.h" +#include "spdlog/details/pattern_formatter.h"