Scroom 0.14-49-gb7ae7a6d
Loading...
Searching...
No Matches
logger.hh
Go to the documentation of this file.
1/*
2 * Scroom - Generic viewer for 2D data
3 * Copyright (C) 2009-2026 Kees-Jan Dijkzeul
4 *
5 * SPDX-License-Identifier: LGPL-2.1
6 */
7
8#pragma once
9
10#include <memory>
11
12#include <spdlog/spdlog.h>
13
14namespace Scroom
15{
16 namespace Detail
17 {
18 // Including this header clears the spdlog default logger, causing any code
19 // that still uses spdlog free functions (spdlog::info() etc.) to crash.
20 // Use Scroom::Logger instead.
22 {
23 ClearDefaultLogger() { spdlog::set_default_logger(nullptr); }
24 };
25
27
28 } // namespace Detail
29
31 {
32 public:
33 using Ptr = std::shared_ptr<LoggerContainer>;
34
35 private:
36 mutable std::mutex mut;
37 std::shared_ptr<spdlog::logger> logger;
38
39 public:
40 static Ptr instance();
41
43
44 std::shared_ptr<spdlog::logger> get() const;
45 void set(std::shared_ptr<spdlog::logger> logger_);
46 };
47
48 class Logger
49 {
50 private:
52
53 public:
54 Logger();
55 explicit Logger(LoggerContainer::Ptr container_);
56
57 std::shared_ptr<spdlog::logger> operator->() const;
58 };
59
60} // namespace Scroom
Definition logger.hh:31
static Ptr instance()
Definition logger.cc:21
std::mutex mut
Definition logger.hh:36
std::shared_ptr< LoggerContainer > Ptr
Definition logger.hh:33
std::shared_ptr< spdlog::logger > get() const
Definition logger.cc:35
LoggerContainer()
Definition logger.cc:16
void set(std::shared_ptr< spdlog::logger > logger_)
Definition logger.cc:41
std::shared_ptr< spdlog::logger > logger
Definition logger.hh:37
Definition logger.hh:49
Logger()
Definition logger.cc:47
LoggerContainer::Ptr container
Definition logger.hh:51
std::shared_ptr< spdlog::logger > operator->() const
Definition logger.cc:57
Definition color.hh:26
const ClearDefaultLogger clearDefaultLogger
Definition logger.hh:26
Definition blockallocator.hh:18
Definition logger.hh:22
ClearDefaultLogger()
Definition logger.hh:23