mirror of
https://github.com/gabime/spdlog.git
synced 2025-09-29 01:29:35 +08:00
Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
10e809cf64 | ||
![]() |
3079551d30 | ||
![]() |
f4c5c5a367 | ||
![]() |
2a7b995723 | ||
![]() |
d0beac70bd | ||
![]() |
cbf66ac653 | ||
![]() |
98f9cb8c1f | ||
![]() |
8bd4c87d2f | ||
![]() |
c88b568685 | ||
![]() |
f01da91abf |
@@ -32,7 +32,13 @@ endif()
|
|||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
add_executable(example example.cpp)
|
add_executable(example example.cpp)
|
||||||
target_link_libraries(example spdlog::spdlog Threads::Threads)
|
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||||
|
find_library(log-lib log)
|
||||||
|
target_link_libraries(example spdlog::spdlog Threads::Threads log)
|
||||||
|
else()
|
||||||
|
target_link_libraries(example spdlog::spdlog Threads::Threads)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
add_executable(multisink multisink.cpp)
|
add_executable(multisink multisink.cpp)
|
||||||
target_link_libraries(multisink spdlog::spdlog Threads::Threads)
|
target_link_libraries(multisink spdlog::spdlog Threads::Threads)
|
||||||
|
@@ -163,7 +163,6 @@ void async_example()
|
|||||||
// {:n} - don't split the output to lines.
|
// {:n} - don't split the output to lines.
|
||||||
|
|
||||||
#include "spdlog/fmt/bin_to_hex.h"
|
#include "spdlog/fmt/bin_to_hex.h"
|
||||||
|
|
||||||
void binary_example()
|
void binary_example()
|
||||||
{
|
{
|
||||||
auto console = spdlog::get("console");
|
auto console = spdlog::get("console");
|
||||||
|
@@ -85,17 +85,17 @@ static const char *level_names[] SPDLOG_LEVEL_NAMES;
|
|||||||
|
|
||||||
static const char *short_level_names[]{"T", "D", "I", "W", "E", "C", "O"};
|
static const char *short_level_names[]{"T", "D", "I", "W", "E", "C", "O"};
|
||||||
|
|
||||||
inline const char *to_c_str(spdlog::level::level_enum l)
|
inline const char *to_c_str(spdlog::level::level_enum l) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
return level_names[l];
|
return level_names[l];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline const char *to_short_c_str(spdlog::level::level_enum l)
|
inline const char *to_short_c_str(spdlog::level::level_enum l) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
return short_level_names[l];
|
return short_level_names[l];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline spdlog::level::level_enum from_str(const std::string &name)
|
inline spdlog::level::level_enum from_str(const std::string &name) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
static std::unordered_map<std::string, level_enum> name_to_level = // map string->level
|
static std::unordered_map<std::string, level_enum> name_to_level = // map string->level
|
||||||
{{level_names[0], level::trace}, // trace
|
{{level_names[0], level::trace}, // trace
|
||||||
|
@@ -57,7 +57,7 @@ namespace spdlog {
|
|||||||
namespace details {
|
namespace details {
|
||||||
namespace os {
|
namespace os {
|
||||||
|
|
||||||
inline spdlog::log_clock::time_point now()
|
inline spdlog::log_clock::time_point now() SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
|
|
||||||
#if defined __linux__ && defined SPDLOG_CLOCK_COARSE
|
#if defined __linux__ && defined SPDLOG_CLOCK_COARSE
|
||||||
@@ -70,7 +70,7 @@ inline spdlog::log_clock::time_point now()
|
|||||||
return log_clock::now();
|
return log_clock::now();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
inline std::tm localtime(const std::time_t &time_tt)
|
inline std::tm localtime(const std::time_t &time_tt) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@@ -83,13 +83,13 @@ inline std::tm localtime(const std::time_t &time_tt)
|
|||||||
return tm;
|
return tm;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::tm localtime()
|
inline std::tm localtime() SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
std::time_t now_t = time(nullptr);
|
std::time_t now_t = time(nullptr);
|
||||||
return localtime(now_t);
|
return localtime(now_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::tm gmtime(const std::time_t &time_tt)
|
inline std::tm gmtime(const std::time_t &time_tt) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@@ -102,21 +102,11 @@ inline std::tm gmtime(const std::time_t &time_tt)
|
|||||||
return tm;
|
return tm;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline std::tm gmtime()
|
inline std::tm gmtime() SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
std::time_t now_t = time(nullptr);
|
std::time_t now_t = time(nullptr);
|
||||||
return gmtime(now_t);
|
return gmtime(now_t);
|
||||||
}
|
}
|
||||||
inline bool operator==(const std::tm &tm1, const std::tm &tm2)
|
|
||||||
{
|
|
||||||
return (tm1.tm_sec == tm2.tm_sec && tm1.tm_min == tm2.tm_min && tm1.tm_hour == tm2.tm_hour && tm1.tm_mday == tm2.tm_mday &&
|
|
||||||
tm1.tm_mon == tm2.tm_mon && tm1.tm_year == tm2.tm_year && tm1.tm_isdst == tm2.tm_isdst);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool operator!=(const std::tm &tm1, const std::tm &tm2)
|
|
||||||
{
|
|
||||||
return !(tm1 == tm2);
|
|
||||||
}
|
|
||||||
|
|
||||||
// eol definition
|
// eol definition
|
||||||
#if !defined(SPDLOG_EOL)
|
#if !defined(SPDLOG_EOL)
|
||||||
@@ -176,7 +166,7 @@ inline bool fopen_s(FILE **fp, const filename_t &filename, const filename_t &mod
|
|||||||
return *fp == nullptr;
|
return *fp == nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int remove(const filename_t &filename)
|
inline int remove(const filename_t &filename) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
|
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
|
||||||
return _wremove(filename.c_str());
|
return _wremove(filename.c_str());
|
||||||
@@ -185,7 +175,7 @@ inline int remove(const filename_t &filename)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int rename(const filename_t &filename1, const filename_t &filename2)
|
inline int rename(const filename_t &filename1, const filename_t &filename2) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
|
#if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
|
||||||
return _wrename(filename1.c_str(), filename2.c_str());
|
return _wrename(filename1.c_str(), filename2.c_str());
|
||||||
@@ -195,7 +185,7 @@ inline int rename(const filename_t &filename1, const filename_t &filename2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return if file exists
|
// Return if file exists
|
||||||
inline bool file_exists(const filename_t &filename)
|
inline bool file_exists(const filename_t &filename) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#ifdef SPDLOG_WCHAR_FILENAMES
|
#ifdef SPDLOG_WCHAR_FILENAMES
|
||||||
@@ -323,7 +313,7 @@ inline int utc_minutes_offset(const std::tm &tm = details::os::localtime())
|
|||||||
// Return current thread id as size_t
|
// Return current thread id as size_t
|
||||||
// It exists because the std::this_thread::get_id() is much slower(especially
|
// It exists because the std::this_thread::get_id() is much slower(especially
|
||||||
// under VS 2013)
|
// under VS 2013)
|
||||||
inline size_t _thread_id()
|
inline size_t _thread_id() SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
return static_cast<size_t>(::GetCurrentThreadId());
|
return static_cast<size_t>(::GetCurrentThreadId());
|
||||||
@@ -346,7 +336,7 @@ inline size_t _thread_id()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return current thread id as size_t (from thread local storage)
|
// Return current thread id as size_t (from thread local storage)
|
||||||
inline size_t thread_id()
|
inline size_t thread_id() SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
#if defined(SPDLOG_DISABLE_TID_CACHING) || (defined(_MSC_VER) && (_MSC_VER < 1900)) || defined(__cplusplus_winrt) || \
|
#if defined(SPDLOG_DISABLE_TID_CACHING) || (defined(_MSC_VER) && (_MSC_VER < 1900)) || defined(__cplusplus_winrt) || \
|
||||||
(defined(__clang__) && !__has_feature(cxx_thread_local))
|
(defined(__clang__) && !__has_feature(cxx_thread_local))
|
||||||
@@ -359,7 +349,7 @@ inline size_t thread_id()
|
|||||||
|
|
||||||
// This is avoid msvc issue in sleep_for that happens if the clock changes.
|
// This is avoid msvc issue in sleep_for that happens if the clock changes.
|
||||||
// See https://github.com/gabime/spdlog/issues/609
|
// See https://github.com/gabime/spdlog/issues/609
|
||||||
inline void sleep_for_millis(int milliseconds)
|
inline void sleep_for_millis(int milliseconds) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
::Sleep(milliseconds);
|
::Sleep(milliseconds);
|
||||||
@@ -396,7 +386,7 @@ inline int pid()
|
|||||||
|
|
||||||
// Determine if the terminal supports colors
|
// Determine if the terminal supports colors
|
||||||
// Source: https://github.com/agauniyal/rang/
|
// Source: https://github.com/agauniyal/rang/
|
||||||
inline bool is_color_terminal()
|
inline bool is_color_terminal() SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
return true;
|
return true;
|
||||||
@@ -418,7 +408,7 @@ inline bool is_color_terminal()
|
|||||||
|
|
||||||
// Detrmine if the terminal attached
|
// Detrmine if the terminal attached
|
||||||
// Source: https://github.com/agauniyal/rang/
|
// Source: https://github.com/agauniyal/rang/
|
||||||
inline bool in_terminal(FILE *file)
|
inline bool in_terminal(FILE *file) SPDLOG_NOEXCEPT
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@@ -69,7 +69,7 @@ protected:
|
|||||||
|
|
||||||
void set_pattern_(const std::string &pattern) override
|
void set_pattern_(const std::string &pattern) override
|
||||||
{
|
{
|
||||||
set_formatter_(spdlog::make_unique<spdlog::pattern_formatter>(pattern));
|
set_formatter_(details::make_unique<spdlog::pattern_formatter>(pattern));
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_formatter_(std::unique_ptr<spdlog::formatter> sink_formatter) override
|
void set_formatter_(std::unique_ptr<spdlog::formatter> sink_formatter) override
|
||||||
|
Reference in New Issue
Block a user