ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
network/log.h
Go to the documentation of this file.
1#pragma once
2
10
25
26#include "../log/log.h"
27
28/* ============================================================================
29 * Network Logging Macros
30 * ============================================================================
31 * Convenience macros for sending log messages over the network.
32 *
33 * Server-side (logging TO a client):
34 * log_info_client(client, "Hello %s", name);
35 * - Takes client_info_t*, direction is automatically SERVER_TO_CLIENT
36 * - Only sends after connection security negotiation
37 *
38 * Client-side (logging TO the server):
39 * log_info_server(transport, "Hello %s", name);
40 * - Takes the shared connection transport
41 * - Direction is automatically CLIENT_TO_SERVER
42 */
43
44/* Server-side: log TO client (takes client_info_t*) */
45#ifdef NDEBUG
46#define LOG_CLIENT_IMPL(client, level, fmt, ...) \
47 do { \
48 if ((client)->security_ready && (client)->transport) { \
49 log_net_message((client)->transport, level, REMOTE_LOG_DIRECTION_SERVER_TO_CLIENT, NULL, 0, NULL, \
50 fmt, ##__VA_ARGS__); \
51 } \
52 } while (0)
53#else
54#define LOG_CLIENT_IMPL(client, level, fmt, ...) \
55 do { \
56 if ((client)->security_ready && (client)->transport) { \
57 log_net_message((client)->transport, level, REMOTE_LOG_DIRECTION_SERVER_TO_CLIENT, __FILE__, __LINE__, __func__, \
58 fmt, ##__VA_ARGS__); \
59 } \
60 } while (0)
61#endif
62
64#define log_debug_client(client, fmt, ...) LOG_CLIENT_IMPL(client, LOG_DEBUG, fmt, ##__VA_ARGS__)
65
67#define log_info_client(client, fmt, ...) LOG_CLIENT_IMPL(client, LOG_INFO, fmt, ##__VA_ARGS__)
68
70#define log_warn_client(client, fmt, ...) LOG_CLIENT_IMPL(client, LOG_WARN, fmt, ##__VA_ARGS__)
71
73#define log_error_client(client, fmt, ...) LOG_CLIENT_IMPL(client, LOG_ERROR, fmt, ##__VA_ARGS__)
74
76#define log_fatal_client(client, fmt, ...) LOG_CLIENT_IMPL(client, LOG_FATAL, fmt, ##__VA_ARGS__)
77
78/* Client-side: log TO server (takes transport) */
79#ifdef NDEBUG
80#define LOG_SERVER_IMPL(transport, level, fmt, ...) \
81 log_net_message(transport, level, REMOTE_LOG_DIRECTION_CLIENT_TO_SERVER, NULL, 0, NULL, fmt, ##__VA_ARGS__)
82#else
83#define LOG_SERVER_IMPL(transport, level, fmt, ...) \
84 log_net_message(transport, level, REMOTE_LOG_DIRECTION_CLIENT_TO_SERVER, __FILE__, __LINE__, __func__, \
85 fmt, ##__VA_ARGS__)
86#endif
87
89#define log_debug_server(transport, fmt, ...) LOG_SERVER_IMPL(transport, LOG_DEBUG, fmt, ##__VA_ARGS__)
90
92#define log_info_server(transport, fmt, ...) LOG_SERVER_IMPL(transport, LOG_INFO, fmt, ##__VA_ARGS__)
93
95#define log_warn_server(transport, fmt, ...) LOG_SERVER_IMPL(transport, LOG_WARN, fmt, ##__VA_ARGS__)
96
98#define log_error_server(transport, fmt, ...) LOG_SERVER_IMPL(transport, LOG_ERROR, fmt, ##__VA_ARGS__)
99
101#define log_fatal_server(transport, fmt, ...) LOG_SERVER_IMPL(transport, LOG_FATAL, fmt, ##__VA_ARGS__)
102
remote_log_direction
Remote log packet direction enumeration.
Definition network/log.h:20
enum remote_log_direction remote_log_direction_t
Remote log packet direction enumeration.
@ REMOTE_LOG_DIRECTION_SERVER_TO_CLIENT
Definition network/log.h:22
@ REMOTE_LOG_DIRECTION_UNKNOWN
Definition network/log.h:21
@ REMOTE_LOG_DIRECTION_CLIENT_TO_SERVER
Definition network/log.h:23
📝 Logging API with multiple log levels and terminal output control