Photon 1.0.0
Loading...
Searching...
No Matches
wincolor_sink.h
Go to the documentation of this file.
1// Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2// Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
4#pragma once
5
6#include <spdlog/common.h>
9#include <spdlog/sinks/sink.h>
10
11#include <memory>
12#include <mutex>
13#include <string>
14#include <array>
15#include <cstdint>
16
17namespace spdlog
18{
19 namespace sinks
20 {
21 /*
22 * Windows color console sink. Uses WriteConsoleA to write to the console with
23 * colors
24 */
25 template <typename ConsoleMutex>
26 class wincolor_sink : public sink
27 {
28 public:
29 wincolor_sink(void* out_handle, color_mode mode);
30 ~wincolor_sink() override;
31
32 wincolor_sink(const wincolor_sink& other) = delete;
33 wincolor_sink& operator=(const wincolor_sink& other) = delete;
34
35 // change the color for the given level
36 void set_color(level::level_enum level, std::uint16_t color);
37 void log(const details::log_msg& msg) final override;
38 void flush() final override;
39 void set_pattern(const std::string& pattern) override final;
40 void set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) override final;
41 void set_color_mode(color_mode mode);
42
43 protected:
44 using mutex_t = typename ConsoleMutex::mutex_t;
49 std::array<std::uint16_t, level::n_levels> colors_;
50
51 // set foreground color and return the orig console attributes (for resetting later)
52 std::uint16_t set_foreground_color_(std::uint16_t attribs);
53
54 // print a range of formatted message to console
55 void print_range_(const memory_buf_t& formatted, size_t start, size_t end);
56
57 // in case we are redirected to file (not in console mode)
58 void write_to_file_(const memory_buf_t& formatted);
59
61 };
62
63 template <typename ConsoleMutex>
64 class wincolor_stdout_sink : public wincolor_sink<ConsoleMutex>
65 {
66 public:
68 };
69
70 template <typename ConsoleMutex>
71 class wincolor_stderr_sink : public wincolor_sink<ConsoleMutex>
72 {
73 public:
74 explicit wincolor_stderr_sink(color_mode mode = color_mode::automatic);
75 };
76
79
82 } // namespace sinks
83} // namespace spdlog
84
85#ifdef SPDLOG_HEADER_ONLY
86#include "wincolor_sink-inl.h"
87#endif
Definition formatter.h:13
Definition sink.h:15
level::level_enum level() const
Definition sink-inl.h:22
Definition wincolor_sink.h:27
bool should_do_colors_
Definition wincolor_sink.h:47
void flush() final override
Definition wincolor_sink-inl.h:82
std::array< std::uint16_t, level::n_levels > colors_
Definition wincolor_sink.h:49
void log(const details::log_msg &msg) final override
Definition wincolor_sink-inl.h:52
void * out_handle_
Definition wincolor_sink.h:45
wincolor_sink & operator=(const wincolor_sink &other)=delete
void write_to_file_(const memory_buf_t &formatted)
Definition wincolor_sink-inl.h:155
mutex_t & mutex_
Definition wincolor_sink.h:46
void set_color_mode_impl(color_mode mode)
Definition wincolor_sink-inl.h:109
std::unique_ptr< spdlog::formatter > formatter_
Definition wincolor_sink.h:48
wincolor_sink(const wincolor_sink &other)=delete
void print_range_(const memory_buf_t &formatted, size_t start, size_t end)
Definition wincolor_sink-inl.h:144
void set_formatter(std::unique_ptr< spdlog::formatter > sink_formatter) override final
Definition wincolor_sink-inl.h:95
~wincolor_sink() override
Definition wincolor_sink-inl.h:38
std::uint16_t set_foreground_color_(std::uint16_t attribs)
Definition wincolor_sink-inl.h:126
void set_pattern(const std::string &pattern) override final
Definition wincolor_sink-inl.h:88
void set_color_mode(color_mode mode)
Definition wincolor_sink-inl.h:102
void set_color(level::level_enum level, std::uint16_t color)
Definition wincolor_sink-inl.h:45
typename ConsoleMutex::mutex_t mutex_t
Definition wincolor_sink.h:44
Definition wincolor_sink.h:72
Definition wincolor_sink.h:65
level_enum
Definition common.h:233
wincolor_stderr_sink< details::console_nullmutex > wincolor_stderr_sink_st
Definition wincolor_sink.h:81
wincolor_stderr_sink< details::console_mutex > wincolor_stderr_sink_mt
Definition wincolor_sink.h:80
wincolor_stdout_sink< details::console_mutex > wincolor_stdout_sink_mt
Definition wincolor_sink.h:77
wincolor_stdout_sink< details::console_nullmutex > wincolor_stdout_sink_st
Definition wincolor_sink.h:78
Definition async.h:26
color_mode
Definition common.h:278
fmt::basic_memory_buffer< char, 250 > memory_buf_t
Definition common.h:173
Definition uuid.h:926
Definition Bitmap.h:10
Definition log_msg.h:14
template
Definition tag_strings.h:13