mirror of
https://github.com/gabime/spdlog.git
synced 2024-12-27 03:00:46 +08:00
Fixed some tidy warnings
This commit is contained in:
parent
3566e0f027
commit
82bb5114e2
@ -23,7 +23,8 @@ clang-analyzer-*,
|
|||||||
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
||||||
-readability-named-parameter,
|
-readability-named-parameter,
|
||||||
-cert-env33-c,
|
-cert-env33-c,
|
||||||
-modernize-concat-nested-namespaces
|
-modernize-concat-nested-namespaces,
|
||||||
|
-cppcoreguidelines-owning-memory
|
||||||
'
|
'
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ namespace helpers {
|
|||||||
// turn off all logging except for logger1: "off,logger1=debug"
|
// turn off all logging except for logger1: "off,logger1=debug"
|
||||||
// turn off all logging except for logger1 and logger2: "off,logger1=debug,logger2=info"
|
// turn off all logging except for logger1 and logger2: "off,logger1=debug,logger2=info"
|
||||||
//
|
//
|
||||||
SPDLOG_API void load_levels(const std::string &txt);
|
SPDLOG_API void load_levels(const std::string &input);
|
||||||
} // namespace helpers
|
} // namespace helpers
|
||||||
} // namespace cfg
|
} // namespace cfg
|
||||||
} // namespace spdlog
|
} // namespace spdlog
|
||||||
|
@ -17,7 +17,7 @@ namespace details {
|
|||||||
class SPDLOG_API file_helper {
|
class SPDLOG_API file_helper {
|
||||||
public:
|
public:
|
||||||
file_helper() = default;
|
file_helper() = default;
|
||||||
explicit file_helper(const file_event_handlers &event_handlers);
|
explicit file_helper(file_event_handlers event_handlers);
|
||||||
|
|
||||||
file_helper(const file_helper &) = delete;
|
file_helper(const file_helper &) = delete;
|
||||||
file_helper &operator=(const file_helper &) = delete;
|
file_helper &operator=(const file_helper &) = delete;
|
||||||
|
@ -184,11 +184,11 @@ protected:
|
|||||||
// common implementation for after templated public api has been resolved to format string and
|
// common implementation for after templated public api has been resolved to format string and
|
||||||
// args
|
// args
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
void log_with_format_(source_loc loc, level lvl, const format_string_t<Args...> &fmt, Args &&...args) {
|
void log_with_format_(source_loc loc, const level lvl, const format_string_t<Args...> &format_string, Args &&...args) {
|
||||||
assert(should_log(lvl));
|
assert(should_log(lvl));
|
||||||
SPDLOG_TRY {
|
SPDLOG_TRY {
|
||||||
memory_buf_t buf;
|
memory_buf_t buf;
|
||||||
fmt::vformat_to(std::back_inserter(buf), fmt, fmt::make_format_args(args...));
|
fmt::vformat_to(std::back_inserter(buf), format_string, fmt::make_format_args(args...));
|
||||||
sink_it_(details::log_msg(loc, name_, lvl, string_view_t(buf.data(), buf.size())));
|
sink_it_(details::log_msg(loc, name_, lvl, string_view_t(buf.data(), buf.size())));
|
||||||
}
|
}
|
||||||
SPDLOG_LOGGER_CATCH(loc)
|
SPDLOG_LOGGER_CATCH(loc)
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
namespace spdlog {
|
namespace spdlog {
|
||||||
|
|
||||||
spdlog::level level_from_str(const std::string &name) noexcept {
|
spdlog::level level_from_str(const std::string &name) noexcept {
|
||||||
auto it = std::find(std::begin(level_string_views), std::end(level_string_views), name);
|
const auto *it = std::find(std::begin(level_string_views), std::end(level_string_views), name);
|
||||||
if (it != std::end(level_string_views)) return static_cast<level>(std::distance(std::begin(level_string_views), it));
|
if (it != std::end(level_string_views)) return static_cast<level>(std::distance(std::begin(level_string_views), it));
|
||||||
|
|
||||||
// check also for "warn" and "err" before giving up
|
// check also for "warn" and "err" before giving up
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include <cerrno>
|
#include <cerrno>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#include "spdlog/common.h"
|
#include "spdlog/common.h"
|
||||||
#include "spdlog/details/os.h"
|
#include "spdlog/details/os.h"
|
||||||
@ -12,8 +13,8 @@
|
|||||||
namespace spdlog {
|
namespace spdlog {
|
||||||
namespace details {
|
namespace details {
|
||||||
|
|
||||||
file_helper::file_helper(const file_event_handlers &event_handlers)
|
file_helper::file_helper(file_event_handlers event_handlers)
|
||||||
: event_handlers_(event_handlers) {}
|
: event_handlers_(std::move(event_handlers)) {}
|
||||||
|
|
||||||
file_helper::~file_helper() { close(); }
|
file_helper::~file_helper() { close(); }
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ int rename(const filename_t &filename1, const filename_t &filename2) noexcept {
|
|||||||
|
|
||||||
// Return true if path exists (file or directory)
|
// Return true if path exists (file or directory)
|
||||||
bool path_exists(const filename_t &filename) noexcept {
|
bool path_exists(const filename_t &filename) noexcept {
|
||||||
struct stat buffer;
|
struct stat buffer{};
|
||||||
return (::stat(filename.c_str(), &buffer) == 0);
|
return (::stat(filename.c_str(), &buffer) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,7 +127,7 @@ size_t filesize(FILE *f) {
|
|||||||
#endif
|
#endif
|
||||||
// 64 bits(but not in osx, linux/musl or cygwin, where fstat64 is deprecated)
|
// 64 bits(but not in osx, linux/musl or cygwin, where fstat64 is deprecated)
|
||||||
#if ((defined(__linux__) && defined(__GLIBC__)) || defined(__sun) || defined(_AIX)) && (defined(__LP64__) || defined(_LP64))
|
#if ((defined(__linux__) && defined(__GLIBC__)) || defined(__sun) || defined(_AIX)) && (defined(__LP64__) || defined(_LP64))
|
||||||
struct stat64 st;
|
struct stat64 st{};
|
||||||
if (::fstat64(fd, &st) == 0) {
|
if (::fstat64(fd, &st) == 0) {
|
||||||
return static_cast<size_t>(st.st_size);
|
return static_cast<size_t>(st.st_size);
|
||||||
}
|
}
|
||||||
@ -275,7 +275,7 @@ bool is_color_terminal() noexcept {
|
|||||||
bool in_terminal(FILE *file) noexcept { return ::isatty(fileno(file)) != 0; }
|
bool in_terminal(FILE *file) noexcept { return ::isatty(fileno(file)) != 0; }
|
||||||
|
|
||||||
// return true on success
|
// return true on success
|
||||||
static bool mkdir_(const filename_t &path) { return ::mkdir(path.c_str(), mode_t(0755)) == 0; }
|
static bool mkdir_(const filename_t &path) { return ::mkdir(path.c_str(), static_cast<mode_t>(0755)) == 0; }
|
||||||
|
|
||||||
// create the given directory - and all directories leading to it
|
// create the given directory - and all directories leading to it
|
||||||
// return true on success or if the directory already exists
|
// return true on success or if the directory already exists
|
||||||
|
@ -80,10 +80,9 @@ std::shared_ptr<logger> registry::get(const std::string &logger_name) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
} else {
|
|
||||||
auto found = loggers_.find(logger_name);
|
|
||||||
return found == loggers_.end() ? nullptr : found->second;
|
|
||||||
}
|
}
|
||||||
|
auto found = loggers_.find(logger_name);
|
||||||
|
return found == loggers_.end() ? nullptr : found->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the map is small do a sequential search and avoid creating string for find(logger_name)
|
// if the map is small do a sequential search and avoid creating string for find(logger_name)
|
||||||
@ -99,10 +98,8 @@ std::shared_ptr<logger> registry::get(std::string_view logger_name) {
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
// otherwise use the normal map lookup
|
// otherwise use the normal map lookup
|
||||||
else {
|
const auto found = loggers_.find(std::string(logger_name));
|
||||||
auto found = loggers_.find(std::string(logger_name));
|
return found == loggers_.end() ? nullptr : found->second;
|
||||||
return found == loggers_.end() ? nullptr : found->second;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<logger> registry::get(const char *logger_name) { return get(std::string_view(logger_name)); }
|
std::shared_ptr<logger> registry::get(const char *logger_name) { return get(std::string_view(logger_name)); }
|
||||||
|
@ -40,9 +40,8 @@ void logger::set_formatter(std::unique_ptr<formatter> f) {
|
|||||||
// last element - we can move it.
|
// last element - we can move it.
|
||||||
(*it)->set_formatter(std::move(f));
|
(*it)->set_formatter(std::move(f));
|
||||||
break; // to prevent clang-tidy warning
|
break; // to prevent clang-tidy warning
|
||||||
} else {
|
|
||||||
(*it)->set_formatter(f->clone());
|
|
||||||
}
|
}
|
||||||
|
(*it)->set_formatter(f->clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,6 +46,9 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scoped_padder(const scoped_padder &) = delete;
|
||||||
|
scoped_padder &operator=(const scoped_padder &) = delete;
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
static unsigned int count_digits(T n) {
|
static unsigned int count_digits(T n) {
|
||||||
return fmt_helper::count_digits(n);
|
return fmt_helper::count_digits(n);
|
||||||
@ -127,7 +130,7 @@ static const char *ampm(const tm &t) { return t.tm_hour >= 12 ? "PM" : "AM"; }
|
|||||||
static int to12h(const tm &t) { return t.tm_hour > 12 ? t.tm_hour - 12 : t.tm_hour; }
|
static int to12h(const tm &t) { return t.tm_hour > 12 ? t.tm_hour - 12 : t.tm_hour; }
|
||||||
|
|
||||||
// Abbreviated weekday name
|
// Abbreviated weekday name
|
||||||
static std::array<const char *, 7> days{{"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}};
|
static constexpr std::array<const char *, 7> days{{"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}};
|
||||||
|
|
||||||
template <typename ScopedPadder>
|
template <typename ScopedPadder>
|
||||||
class a_formatter final : public flag_formatter {
|
class a_formatter final : public flag_formatter {
|
||||||
@ -135,15 +138,15 @@ public:
|
|||||||
explicit a_formatter(padding_info padinfo)
|
explicit a_formatter(padding_info padinfo)
|
||||||
: flag_formatter(padinfo) {}
|
: flag_formatter(padinfo) {}
|
||||||
|
|
||||||
void format(const details::log_msg &, const std::tm &tm_time, memory_buf_t &dest) override {
|
void format(const log_msg &, const std::tm &tm_time, memory_buf_t &dest) override {
|
||||||
string_view_t field_value{days[static_cast<size_t>(tm_time.tm_wday)]};
|
string_view_t field_value{days.at(static_cast<size_t>(tm_time.tm_wday))};
|
||||||
ScopedPadder p(field_value.size(), padinfo_, dest);
|
ScopedPadder p(field_value.size(), padinfo_, dest);
|
||||||
fmt_helper::append_string_view(field_value, dest);
|
fmt_helper::append_string_view(field_value, dest);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Full weekday name
|
// Full weekday name
|
||||||
static std::array<const char *, 7> full_days{{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}};
|
static constexpr std::array<const char *, 7> full_days{{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}};
|
||||||
|
|
||||||
template <typename ScopedPadder>
|
template <typename ScopedPadder>
|
||||||
class A_formatter final : public flag_formatter {
|
class A_formatter final : public flag_formatter {
|
||||||
@ -151,8 +154,8 @@ public:
|
|||||||
explicit A_formatter(padding_info padinfo)
|
explicit A_formatter(padding_info padinfo)
|
||||||
: flag_formatter(padinfo) {}
|
: flag_formatter(padinfo) {}
|
||||||
|
|
||||||
void format(const details::log_msg &, const std::tm &tm_time, memory_buf_t &dest) override {
|
void format(const log_msg &, const std::tm &tm_time, memory_buf_t &dest) override {
|
||||||
string_view_t field_value{full_days[static_cast<size_t>(tm_time.tm_wday)]};
|
string_view_t field_value{full_days.at(static_cast<size_t>(tm_time.tm_wday))};
|
||||||
ScopedPadder p(field_value.size(), padinfo_, dest);
|
ScopedPadder p(field_value.size(), padinfo_, dest);
|
||||||
fmt_helper::append_string_view(field_value, dest);
|
fmt_helper::append_string_view(field_value, dest);
|
||||||
}
|
}
|
||||||
@ -169,7 +172,7 @@ public:
|
|||||||
: flag_formatter(padinfo) {}
|
: flag_formatter(padinfo) {}
|
||||||
|
|
||||||
void format(const details::log_msg &, const std::tm &tm_time, memory_buf_t &dest) override {
|
void format(const details::log_msg &, const std::tm &tm_time, memory_buf_t &dest) override {
|
||||||
string_view_t field_value{months[static_cast<size_t>(tm_time.tm_mon)]};
|
string_view_t field_value{months.at(static_cast<size_t>(tm_time.tm_mon))};
|
||||||
ScopedPadder p(field_value.size(), padinfo_, dest);
|
ScopedPadder p(field_value.size(), padinfo_, dest);
|
||||||
fmt_helper::append_string_view(field_value, dest);
|
fmt_helper::append_string_view(field_value, dest);
|
||||||
}
|
}
|
||||||
@ -186,7 +189,7 @@ public:
|
|||||||
: flag_formatter(padinfo) {}
|
: flag_formatter(padinfo) {}
|
||||||
|
|
||||||
void format(const details::log_msg &, const std::tm &tm_time, memory_buf_t &dest) override {
|
void format(const details::log_msg &, const std::tm &tm_time, memory_buf_t &dest) override {
|
||||||
string_view_t field_value{full_months[static_cast<size_t>(tm_time.tm_mon)]};
|
string_view_t field_value{full_months.at(static_cast<size_t>(tm_time.tm_mon))};
|
||||||
ScopedPadder p(field_value.size(), padinfo_, dest);
|
ScopedPadder p(field_value.size(), padinfo_, dest);
|
||||||
fmt_helper::append_string_view(field_value, dest);
|
fmt_helper::append_string_view(field_value, dest);
|
||||||
}
|
}
|
||||||
@ -203,9 +206,9 @@ public:
|
|||||||
const size_t field_size = 24;
|
const size_t field_size = 24;
|
||||||
ScopedPadder p(field_size, padinfo_, dest);
|
ScopedPadder p(field_size, padinfo_, dest);
|
||||||
|
|
||||||
fmt_helper::append_string_view(days[static_cast<size_t>(tm_time.tm_wday)], dest);
|
fmt_helper::append_string_view(days.at(static_cast<size_t>(tm_time.tm_wday)), dest);
|
||||||
dest.push_back(' ');
|
dest.push_back(' ');
|
||||||
fmt_helper::append_string_view(months[static_cast<size_t>(tm_time.tm_mon)], dest);
|
fmt_helper::append_string_view(months.at(static_cast<size_t>(tm_time.tm_mon)), dest);
|
||||||
dest.push_back(' ');
|
dest.push_back(' ');
|
||||||
fmt_helper::append_int(tm_time.tm_mday, dest);
|
fmt_helper::append_int(tm_time.tm_mday, dest);
|
||||||
dest.push_back(' ');
|
dest.push_back(' ');
|
||||||
@ -493,8 +496,11 @@ public:
|
|||||||
: flag_formatter(padinfo) {}
|
: flag_formatter(padinfo) {}
|
||||||
|
|
||||||
z_formatter() = default;
|
z_formatter() = default;
|
||||||
|
~z_formatter() override = default;
|
||||||
z_formatter(const z_formatter &) = delete;
|
z_formatter(const z_formatter &) = delete;
|
||||||
z_formatter &operator=(const z_formatter &) = delete;
|
z_formatter &operator=(const z_formatter &) = delete;
|
||||||
|
z_formatter(z_formatter &&) = delete;
|
||||||
|
z_formatter &operator=(z_formatter &&) = delete;
|
||||||
|
|
||||||
void format(const details::log_msg &msg, const std::tm &tm_time, memory_buf_t &dest) override {
|
void format(const details::log_msg &msg, const std::tm &tm_time, memory_buf_t &dest) override {
|
||||||
const size_t field_size = 6;
|
const size_t field_size = 6;
|
||||||
@ -626,12 +632,10 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t text_size;
|
size_t text_size = 0;
|
||||||
if (padinfo_.enabled()) {
|
if (padinfo_.enabled()) {
|
||||||
// calc text size for padding based on "filename:line"
|
// calc text size for padding based on "filename:line"
|
||||||
text_size = std::char_traits<char>::length(msg.source.filename) + ScopedPadder::count_digits(msg.source.line) + 1;
|
text_size = std::char_traits<char>::length(msg.source.filename) + ScopedPadder::count_digits(msg.source.line) + 1;
|
||||||
} else {
|
|
||||||
text_size = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ScopedPadder p(text_size, padinfo_, dest);
|
ScopedPadder p(text_size, padinfo_, dest);
|
||||||
@ -784,7 +788,7 @@ public:
|
|||||||
dest.push_back(' ');
|
dest.push_back(' ');
|
||||||
|
|
||||||
// append logger name if exists
|
// append logger name if exists
|
||||||
if (msg.logger_name.size() > 0) {
|
if (!msg.logger_name.empty()) {
|
||||||
dest.push_back('[');
|
dest.push_back('[');
|
||||||
fmt_helper::append_string_view(msg.logger_name, dest);
|
fmt_helper::append_string_view(msg.logger_name, dest);
|
||||||
dest.push_back(']');
|
dest.push_back(']');
|
||||||
@ -846,7 +850,7 @@ pattern_formatter::pattern_formatter(pattern_time_type time_type, std::string eo
|
|||||||
|
|
||||||
std::unique_ptr<formatter> pattern_formatter::clone() const {
|
std::unique_ptr<formatter> pattern_formatter::clone() const {
|
||||||
custom_flags cloned_custom_formatters;
|
custom_flags cloned_custom_formatters;
|
||||||
for (auto &it : custom_handlers_) {
|
for (const auto &it : custom_handlers_) {
|
||||||
cloned_custom_formatters[it.first] = it.second->clone();
|
cloned_custom_formatters[it.first] = it.second->clone();
|
||||||
}
|
}
|
||||||
auto cloned = std::make_unique<pattern_formatter>(pattern_, pattern_time_type_, eol_, std::move(cloned_custom_formatters));
|
auto cloned = std::make_unique<pattern_formatter>(pattern_, pattern_time_type_, eol_, std::move(cloned_custom_formatters));
|
||||||
@ -1137,29 +1141,27 @@ details::padding_info pattern_formatter::handle_padspec_(std::string::const_iter
|
|||||||
++it;
|
++it;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
side = details::padding_info::pad_side::left;
|
side = padding_info::pad_side::left;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (it == end || !std::isdigit(static_cast<unsigned char>(*it))) {
|
if (it == end || (std::isdigit(static_cast<unsigned char>(*it)) == 0)) {
|
||||||
return padding_info{}; // no padding if no digit found here
|
return padding_info{}; // no padding if no digit found here
|
||||||
}
|
}
|
||||||
|
|
||||||
auto width = static_cast<size_t>(*it) - '0';
|
auto width = static_cast<size_t>(*it) - '0';
|
||||||
for (++it; it != end && std::isdigit(static_cast<unsigned char>(*it)); ++it) {
|
for (++it; it != end && (std::isdigit(static_cast<unsigned char>(*it)) != 0); ++it) {
|
||||||
auto digit = static_cast<size_t>(*it) - '0';
|
auto digit = static_cast<size_t>(*it) - '0';
|
||||||
width = width * 10 + digit;
|
width = width * 10 + digit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// search for the optional truncate marker '!'
|
// search for the optional truncate marker '!'
|
||||||
bool truncate;
|
bool truncate = false;
|
||||||
if (it != end && *it == '!') {
|
if (it != end && *it == '!') {
|
||||||
truncate = true;
|
truncate = true;
|
||||||
++it;
|
++it;
|
||||||
} else {
|
|
||||||
truncate = false;
|
|
||||||
}
|
}
|
||||||
return details::padding_info{std::min<size_t>(width, max_width), side, truncate};
|
return padding_info{std::min<size_t>(width, max_width), side, truncate};
|
||||||
}
|
}
|
||||||
|
|
||||||
void pattern_formatter::compile_pattern_(const std::string &pattern) {
|
void pattern_formatter::compile_pattern_(const std::string &pattern) {
|
||||||
|
@ -45,11 +45,12 @@ rotating_file_sink<Mutex>::rotating_file_sink(filename_t base_filename,
|
|||||||
// e.g. calc_filename("logs/mylog.txt, 3) => "logs/mylog.3.txt".
|
// e.g. calc_filename("logs/mylog.txt, 3) => "logs/mylog.3.txt".
|
||||||
template <typename Mutex>
|
template <typename Mutex>
|
||||||
filename_t rotating_file_sink<Mutex>::calc_filename(const filename_t &filename, std::size_t index) {
|
filename_t rotating_file_sink<Mutex>::calc_filename(const filename_t &filename, std::size_t index) {
|
||||||
if (index == 0u) {
|
if (index == 0U) {
|
||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
filename_t basename, ext;
|
filename_t basename;
|
||||||
|
filename_t ext;
|
||||||
std::tie(basename, ext) = details::file_helper::split_by_extension(filename);
|
std::tie(basename, ext) = details::file_helper::split_by_extension(filename);
|
||||||
return fmt_lib::format(SPDLOG_FMT_STRING(SPDLOG_FILENAME_T("{}.{}{}")), basename, index, ext);
|
return fmt_lib::format(SPDLOG_FMT_STRING(SPDLOG_FILENAME_T("{}.{}{}")), basename, index, ext);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user