Grok 20.3.2
Logger.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016-2026 Grok Image Compression Inc.
3 *
4 * This source code is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License, version 3,
6 * as published by the Free Software Foundation.
7 *
8 * This source code is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Affero General Public License for more details.
12 *
13 * You should have received a copy of the GNU Affero General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 */
17
18#pragma once
19
20#include "grok.h" // for grk_msg_callback
21#include "ILogger.h"
22
23namespace grk
24{
25
26struct Logger : public ILogger
27{
29 : error_data_(nullptr), warning_data_(nullptr), info_data_(nullptr), debug_data_(nullptr),
30 trace_data_(nullptr), error_handler(nullptr), warning_handler(nullptr),
31 info_handler(nullptr), debug_handler(nullptr), trace_handler(nullptr)
32 {}
33
34 void info(const char* fmt, ...) override
35 {
36 if(!info_handler)
37 return;
38 va_list args;
39 va_start(args, fmt);
41 va_end(args);
42 }
43
44 void warn(const char* fmt, ...) override
45 {
47 return;
48 va_list args;
49 va_start(args, fmt);
51 va_end(args);
52 }
53
54 void error(const char* fmt, ...) override
55 {
56 if(!error_handler)
57 return;
58 va_list args;
59 va_start(args, fmt);
61 va_end(args);
62 }
63
64 void debug(const char* fmt, ...) override
65 {
66 if(!debug_handler)
67 return;
68 va_list args;
69 va_start(args, fmt);
71 va_end(args);
72 }
73
74 void trace(const char* fmt, ...) override
75 {
76 if(!trace_handler)
77 return;
78 va_list args;
79 va_start(args, fmt);
81 va_end(args);
82 }
83
94
96
97private:
98 void log_message(grk_msg_callback msg_handler, void* l_data, const char* fmt,
99 va_list args) noexcept
100 {
101 constexpr int message_size = 512;
102 if(fmt != nullptr)
103 {
104 char buffer[message_size];
105 vsnprintf(buffer, message_size, fmt, args);
106 msg_handler(buffer, l_data);
107 }
108 }
109};
110
111extern ILogger& grklog;
112
113} // namespace grk
void(* grk_msg_callback)(const char *msg, void *client_data)
Logging callback.
Definition grok.h:178
ResWindow.
Definition CompressedChunkCache.h:36
ILogger & grklog
Definition Logger.cpp:24
Definition ILogger.h:27
void log_message(grk_msg_callback msg_handler, void *l_data, const char *fmt, va_list args) noexcept
Definition Logger.h:98
grk_msg_callback warning_handler
Definition Logger.h:90
void warn(const char *fmt,...) override
Definition Logger.h:44
grk_msg_callback debug_handler
Definition Logger.h:92
grk_msg_callback error_handler
Definition Logger.h:89
grk_msg_callback info_handler
Definition Logger.h:91
void debug(const char *fmt,...) override
Definition Logger.h:64
void * trace_data_
Definition Logger.h:88
void * info_data_
Definition Logger.h:86
void error(const char *fmt,...) override
Definition Logger.h:54
void * debug_data_
Definition Logger.h:87
void * warning_data_
Definition Logger.h:85
Logger()
Definition Logger.h:28
void * error_data_
Definition Logger.h:84
void info(const char *fmt,...) override
Definition Logger.h:34
void trace(const char *fmt,...) override
Definition Logger.h:74
grk_msg_callback trace_handler
Definition Logger.h:93
static Logger logger_
Definition Logger.h:95