Skip to content

Commit

Permalink
Add Windows msvc_sink (#58)
Browse files Browse the repository at this point in the history
Co-authored-by: gotham <[email protected]>
  • Loading branch information
guangie88 and ttt-2023 authored Aug 12, 2020
1 parent 1482cec commit 804cd7c
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 3 deletions.
16 changes: 15 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,16 @@ type = "syslog_sink_mt"
# syslog_option = 0 (default)
# syslog_facility = LOG_USER (default macro value)

# only works for Windows
[[sink]]
name = "msvc_st"
type = "msvc_sink_st"

# only works for Windows
[[sink]]
name = "msvc_mt"
type = "msvc_sink_mt"

[[pattern]]
name = "succient"
value = "%c-%L: %v"
Expand All @@ -294,6 +304,10 @@ sinks = [
"syslog_st", "syslog_mt"]
level = "trace"

[[logger]]
name = "windows_only"
sinks = ["msvc_st", "msvc_mt"]

[[logger]]
name = "console"
sinks = ["console_st", "console_mt"]
Expand Down Expand Up @@ -329,7 +343,7 @@ overflow_policy = "overrun_oldest" # block (default) | overrun_oldest

```toml
# level is optional for both sinks and loggers
# level for error logging is 'err', not'error'
# level for error logging is 'err', not 'error'

# max_size supports suffix
# - T (terabyte)
Expand Down
19 changes: 18 additions & 1 deletion include/spdlog_setup/details/conf_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include "spdlog/sinks/stdout_sinks.h"

#ifdef _WIN32
#include "spdlog/sinks/msvc_sink.h"
#include "spdlog/sinks/wincolor_sink.h"
#else
#include "spdlog/sinks/ansicolor_sink.h"
Expand Down Expand Up @@ -118,6 +119,12 @@ enum class sink_type {

/** Represents syslog_sink_st */
SyslogSinkMt,

/** Represents msvc_sink_st */
MSVCSinkSt,

/** Represents msvc_sink_mt */
MSVCSinkMt,
};

/**
Expand Down Expand Up @@ -599,11 +606,12 @@ inline auto sink_type_from_str(const std::string &type) -> sink_type {
{"daily_file_sink_mt", sink_type::DailyFileSinkMt},
{"null_sink_st", sink_type::NullSinkSt},
{"null_sink_mt", sink_type::NullSinkMt},

#ifdef SPDLOG_ENABLE_SYSLOG
{"syslog_sink_st", sink_type::SyslogSinkSt},
{"syslog_sink_mt", sink_type::SyslogSinkMt},
#endif
{"msvc_sink_st", sink_type::MSVCSinkSt},
{"msvc_sink_mt", sink_type::MSVCSinkMt},
};

return find_value_from_map(
Expand Down Expand Up @@ -881,6 +889,8 @@ inline auto sink_from_sink_type(
#ifdef _WIN32
using color_stdout_sink_st = spdlog::sinks::wincolor_stdout_sink_st;
using color_stdout_sink_mt = spdlog::sinks::wincolor_stdout_sink_mt;
using msvc_sink_st = spdlog::sinks::msvc_sink_st;
using msvc_sink_mt = spdlog::sinks::msvc_sink_mt;
#else
using color_stdout_sink_st = spdlog::sinks::ansicolor_stdout_sink_st;
using color_stdout_sink_mt = spdlog::sinks::ansicolor_stdout_sink_mt;
Expand Down Expand Up @@ -934,6 +944,13 @@ inline auto sink_from_sink_type(
return setup_syslog_sink<syslog_sink_mt>(sink_table);
#endif

#ifdef _WIN32
case sink_type::MSVCSinkSt:
return make_shared<msvc_sink_st>();
case sink_type::MSVCSinkMt:
return make_shared<msvc_sink_mt>();
#endif

default:
throw setup_error(format(
"Unexpected sink error with sink enum value '{}'",
Expand Down
11 changes: 10 additions & 1 deletion src/unit_test/examples.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,14 @@ static constexpr auto FULL_CONF = R"x(
name = "null_sink_mt"
type = "null_sink_mt"
[[sink]]
name = "msvc_sink_st"
type = "msvc_sink_st"
[[sink]]
name = "msvc_sink_mt"
type = "msvc_sink_mt"
[[pattern]]
name = "succient"
value = "%c-%L: %v"
Expand All @@ -102,7 +110,8 @@ static constexpr auto FULL_CONF = R"x(
"daily_out", "daily_err",
"file_out", "file_err",
"rotate_out", "rotate_err",
"null_sink_st", "null_sink_mt"]
"null_sink_st", "null_sink_mt",
"msvc_sink_st", "msvc_sink_mt"]
level = "trace"
[[logger]]
Expand Down

0 comments on commit 804cd7c

Please sign in to comment.