Grok 15.1.0
Logger.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016-2025 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#pragma once
18
19#include "grok.h" // for grk_msg_callback
20#include "ILogger.h"
21
22namespace grk
23{
24
25struct Logger : public ILogger
26{
28 : error_data_(nullptr), warning_data_(nullptr), info_data_(nullptr), debug_data_(nullptr),
29 trace_data_(nullptr), error_handler(nullptr), warning_handler(nullptr),
30 info_handler(nullptr), debug_handler(nullptr), trace_handler(nullptr)
31 {}
32
33 void info(const char* fmt, ...) override
34 {
35 if(!info_handler)
36 return;
37 va_list args;
38 va_start(args, fmt);
40 va_end(args);
41 }
42
43 void warn(const char* fmt, ...) override
44 {
46 return;
47 va_list args;
48 va_start(args, fmt);
50 va_end(args);
51 }
52
53 void error(const char* fmt, ...) override
54 {
55 if(!error_handler)
56 return;
57 va_list args;
58 va_start(args, fmt);
60 va_end(args);
61 }
62
63 void debug(const char* fmt, ...) override
64 {
65 if(!debug_handler)
66 return;
67 va_list args;
68 va_start(args, fmt);
70 va_end(args);
71 }
72
73 void trace(const char* fmt, ...) override
74 {
75 if(!trace_handler)
76 return;
77 va_list args;
78 va_start(args, fmt);
80 va_end(args);
81 }
82
93
95
96private:
97 void log_message(grk_msg_callback msg_handler, void* l_data, const char* fmt,
98 va_list args) noexcept
99 {
100 constexpr int message_size = 512;
101 if(fmt != nullptr)
102 {
103 char buffer[message_size];
104 vsnprintf(buffer, message_size, fmt, args);
105 msg_handler(buffer, l_data);
106 }
107 }
108};
109
110extern Logger& grklog;
111
112} // namespace grk
void(* grk_msg_callback)(const char *msg, void *client_data)
Logging callback.
Definition grok.h:165
Copyright (C) 2016-2025 Grok Image Compression Inc.
Definition ICacheable.h:20
Logger & grklog
Definition Logger.cpp:20
Definition ILogger.h:25
void log_message(grk_msg_callback msg_handler, void *l_data, const char *fmt, va_list args) noexcept
Definition Logger.h:97
grk_msg_callback warning_handler
Definition Logger.h:89
void warn(const char *fmt,...) override
Definition Logger.h:43
grk_msg_callback debug_handler
Definition Logger.h:91
grk_msg_callback error_handler
Definition Logger.h:88
grk_msg_callback info_handler
Definition Logger.h:90
void debug(const char *fmt,...) override
Definition Logger.h:63
void * trace_data_
Definition Logger.h:87
void * info_data_
Definition Logger.h:85
void error(const char *fmt,...) override
Definition Logger.h:53
void * debug_data_
Definition Logger.h:86
void * warning_data_
Definition Logger.h:84
Logger()
Definition Logger.h:27
void * error_data_
Definition Logger.h:83
void info(const char *fmt,...) override
Definition Logger.h:33
void trace(const char *fmt,...) override
Definition Logger.h:73
grk_msg_callback trace_handler
Definition Logger.h:92
static Logger logger_
Definition Logger.h:94