Coverage Report

Created: 2025-07-01 06:46

/src/FreeRDP/winpr/include/winpr/wlog.h
Line
Count
Source (jump to first uncovered line)
1
/**
2
 * WinPR: Windows Portable Runtime
3
 * WinPR Logger
4
 *
5
 * Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
6
 * Copyright 2015 Thincast Technologies GmbH
7
 * Copyright 2015 Bernhard Miklautz <bernhard.miklautz@thincast.com>
8
 *
9
 *
10
 * Licensed under the Apache License, Version 2.0 (the "License");
11
 * you may not use this file except in compliance with the License.
12
 * You may obtain a copy of the License at
13
 *
14
 *     http://www.apache.org/licenses/LICENSE-2.0
15
 *
16
 * Unless required by applicable law or agreed to in writing, software
17
 * distributed under the License is distributed on an "AS IS" BASIS,
18
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
 * See the License for the specific language governing permissions and
20
 * limitations under the License.
21
 */
22
23
#ifndef WINPR_LOG_H
24
#define WINPR_LOG_H
25
26
#ifdef __cplusplus
27
extern "C"
28
{
29
#endif
30
31
#include <stdarg.h>
32
33
#include <winpr/wtypes.h>
34
#include <winpr/winpr.h>
35
#include <winpr/synch.h>
36
#include <winpr/thread.h>
37
38
/**
39
 * Log Levels
40
 */
41
0
#define WLOG_TRACE 0
42
0
#define WLOG_DEBUG 1
43
1
#define WLOG_INFO 2
44
49
#define WLOG_WARN 3
45
969
#define WLOG_ERROR 4
46
0
#define WLOG_FATAL 5
47
2.03k
#define WLOG_OFF 6
48
1.02k
#define WLOG_LEVEL_INHERIT 0xFFFF
49
50
/**
51
 * Log Message
52
 */
53
2.03k
#define WLOG_MESSAGE_TEXT 0
54
0
#define WLOG_MESSAGE_DATA 1
55
0
#define WLOG_MESSAGE_IMAGE 2
56
0
#define WLOG_MESSAGE_PACKET 3
57
58
/**
59
 * Log Appenders
60
 */
61
3
#define WLOG_APPENDER_CONSOLE 0
62
0
#define WLOG_APPENDER_FILE 1
63
0
#define WLOG_APPENDER_BINARY 2
64
0
#define WLOG_APPENDER_CALLBACK 3
65
0
#define WLOG_APPENDER_SYSLOG 4
66
#define WLOG_APPENDER_JOURNALD 5
67
0
#define WLOG_APPENDER_UDP 6
68
69
  typedef struct
70
  {
71
    DWORD Type;
72
73
    DWORD Level;
74
75
    LPSTR PrefixString;
76
77
    LPCSTR FormatString;
78
    LPCSTR TextString;
79
80
    size_t LineNumber;   /* __LINE__ */
81
    LPCSTR FileName;     /* __FILE__ */
82
    LPCSTR FunctionName; /* __func__ */
83
84
    /* Data Message */
85
86
    void* Data;
87
    size_t Length;
88
89
    /* Image Message */
90
91
    void* ImageData;
92
    size_t ImageWidth;
93
    size_t ImageHeight;
94
    size_t ImageBpp;
95
96
    /* Packet Message */
97
98
    void* PacketData;
99
    size_t PacketLength;
100
    DWORD PacketFlags;
101
  } wLogMessage;
102
  typedef struct s_wLogLayout wLogLayout;
103
  typedef struct s_wLogAppender wLogAppender;
104
  typedef struct s_wLog wLog;
105
106
#define WLOG_PACKET_INBOUND 1
107
0
#define WLOG_PACKET_OUTBOUND 2
108
109
  WINPR_API BOOL WLog_PrintMessage(wLog* log, DWORD type, DWORD level, size_t line,
110
                                   const char* file, const char* function, ...);
111
  WINPR_API BOOL WLog_PrintMessageVA(wLog* log, DWORD type, DWORD level, size_t line,
112
                                     const char* file, const char* function, va_list args);
113
114
  WINPR_API wLog* WLog_GetRoot(void);
115
  WINPR_API wLog* WLog_Get(LPCSTR name);
116
  WINPR_API DWORD WLog_GetLogLevel(wLog* log);
117
  WINPR_API BOOL WLog_IsLevelActive(wLog* _log, DWORD _log_level);
118
119
  /** @brief Set a custom context for a dynamic logger.
120
   *  This can be used to print a customized prefix, e.g. some session id for a specific context
121
   *
122
   *  @param log The logger to ste the context for. Must not be \b NULL
123
   *  @param fkt A function pointer that is called to get the custimized string.
124
   *  @param context A context \b fkt is called with. Caller must ensure it is still allocated
125
   * when \b log is used
126
   *
127
   *  @return \b TRUE for success, \b FALSE otherwise.
128
   */
129
  WINPR_API BOOL WLog_SetContext(wLog* log, const char* (*fkt)(void*), void* context);
130
131
#define WLog_Print_unchecked(_log, _log_level, ...)                                          \
132
0
  do                                                                                       \
133
0
  {                                                                                        \
134
0
    WLog_PrintMessage(_log, WLOG_MESSAGE_TEXT, _log_level, __LINE__, __FILE__, __func__, \
135
0
                      __VA_ARGS__);                                                      \
136
0
  } while (0)
137
138
#define WLog_Print(_log, _log_level, ...)                        \
139
0
  do                                                           \
140
0
  {                                                            \
141
0
    if (WLog_IsLevelActive(_log, _log_level))                \
142
0
    {                                                        \
143
0
      WLog_Print_unchecked(_log, _log_level, __VA_ARGS__); \
144
0
    }                                                        \
145
0
  } while (0)
146
147
#define WLog_Print_tag(_tag, _log_level, ...)                 \
148
  do                                                        \
149
  {                                                         \
150
    static wLog* _log_cached_ptr = NULL;                  \
151
    if (!_log_cached_ptr)                                 \
152
      _log_cached_ptr = WLog_Get(_tag);                 \
153
    WLog_Print(_log_cached_ptr, _log_level, __VA_ARGS__); \
154
  } while (0)
155
156
#define WLog_PrintVA_unchecked(_log, _log_level, _args)                                        \
157
  do                                                                                         \
158
  {                                                                                          \
159
    WLog_PrintMessageVA(_log, WLOG_MESSAGE_TEXT, _log_level, __LINE__, __FILE__, __func__, \
160
                        _args);                                                            \
161
  } while (0)
162
163
#define WLog_PrintVA(_log, _log_level, _args)                \
164
  do                                                       \
165
  {                                                        \
166
    if (WLog_IsLevelActive(_log, _log_level))            \
167
    {                                                    \
168
      WLog_PrintVA_unchecked(_log, _log_level, _args); \
169
    }                                                    \
170
  } while (0)
171
172
#define WLog_Data(_log, _log_level, ...)                                                         \
173
  do                                                                                           \
174
  {                                                                                            \
175
    if (WLog_IsLevelActive(_log, _log_level))                                                \
176
    {                                                                                        \
177
      WLog_PrintMessage(_log, WLOG_MESSAGE_DATA, _log_level, __LINE__, __FILE__, __func__, \
178
                        __VA_ARGS__);                                                      \
179
    }                                                                                        \
180
  } while (0)
181
182
#define WLog_Image(_log, _log_level, ...)                                                        \
183
  do                                                                                           \
184
  {                                                                                            \
185
    if (WLog_IsLevelActive(_log, _log_level))                                                \
186
    {                                                                                        \
187
      WLog_PrintMessage(_log, WLOG_MESSAGE_DATA, _log_level, __LINE__, __FILE__, __func__, \
188
                        __VA_ARGS__);                                                      \
189
    }                                                                                        \
190
  } while (0)
191
192
#define WLog_Packet(_log, _log_level, ...)                                                         \
193
0
  do                                                                                             \
194
0
  {                                                                                              \
195
0
    if (WLog_IsLevelActive(_log, _log_level))                                                  \
196
0
    {                                                                                          \
197
0
      WLog_PrintMessage(_log, WLOG_MESSAGE_PACKET, _log_level, __LINE__, __FILE__, __func__, \
198
0
                        __VA_ARGS__);                                                        \
199
0
    }                                                                                          \
200
0
  } while (0)
201
202
  static inline void WLog_Print_dbg_tag(const char* WINPR_RESTRICT tag, DWORD log_level,
203
                                        size_t line, const char* file, const char* fkt, ...)
204
1.01k
  {
205
1.01k
    static wLog* log_cached_ptr = NULL;
206
1.01k
    if (!log_cached_ptr)
207
2
      log_cached_ptr = WLog_Get(tag);
208
209
1.01k
    if (WLog_IsLevelActive(log_cached_ptr, log_level))
210
1.01k
    {
211
1.01k
      va_list ap;
212
1.01k
      va_start(ap, fkt);
213
1.01k
      WLog_PrintMessageVA(log_cached_ptr, WLOG_MESSAGE_TEXT, log_level, line, file, fkt, ap);
214
1.01k
      va_end(ap);
215
1.01k
    }
216
1.01k
  }
Unexecuted instantiation: TestFuzzCodecs.c:WLog_Print_dbg_tag
Unexecuted instantiation: planar.c:WLog_Print_dbg_tag
Unexecuted instantiation: interleaved.c:WLog_Print_dbg_tag
Unexecuted instantiation: progressive.c:WLog_Print_dbg_tag
Unexecuted instantiation: rfx.c:WLog_Print_dbg_tag
Unexecuted instantiation: region.c:WLog_Print_dbg_tag
Unexecuted instantiation: ncrush.c:WLog_Print_dbg_tag
Unexecuted instantiation: xcrush.c:WLog_Print_dbg_tag
Unexecuted instantiation: mppc.c:WLog_Print_dbg_tag
Unexecuted instantiation: zgfx.c:WLog_Print_dbg_tag
Unexecuted instantiation: clear.c:WLog_Print_dbg_tag
Unexecuted instantiation: rfx_sse2.c:WLog_Print_dbg_tag
Unexecuted instantiation: rfx_neon.c:WLog_Print_dbg_tag
Unexecuted instantiation: primitives.c:WLog_Print_dbg_tag
Unexecuted instantiation: color.c:WLog_Print_dbg_tag
Unexecuted instantiation: bitmap.c:WLog_Print_dbg_tag
Unexecuted instantiation: rfx_decode.c:WLog_Print_dbg_tag
Unexecuted instantiation: rfx_dwt.c:WLog_Print_dbg_tag
Unexecuted instantiation: rfx_encode.c:WLog_Print_dbg_tag
Unexecuted instantiation: rfx_quantization.c:WLog_Print_dbg_tag
Unexecuted instantiation: rfx_rlgr.c:WLog_Print_dbg_tag
Unexecuted instantiation: nsc.c:WLog_Print_dbg_tag
Unexecuted instantiation: nsc_encode.c:WLog_Print_dbg_tag
Unexecuted instantiation: nsc_sse2.c:WLog_Print_dbg_tag
Unexecuted instantiation: nsc_neon.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_add.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_andor.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_alphaComp.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_colors.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_copy.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_set.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_shift.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_sign.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_YUV.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_YCoCg.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_colors_neon.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_YCoCg_neon.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_YUV_neon.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_colors_sse2.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_set_sse2.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_add_sse3.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_alphaComp_sse3.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_andor_sse3.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_shift_sse3.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_sign_ssse3.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_YCoCg_ssse3.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_copy_sse4_1.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_YUV_sse4.1.c:WLog_Print_dbg_tag
Unexecuted instantiation: prim_copy_avx2.c:WLog_Print_dbg_tag
Unexecuted instantiation: init.c:WLog_Print_dbg_tag
Unexecuted instantiation: sleep.c:WLog_Print_dbg_tag
Unexecuted instantiation: interlocked.c:WLog_Print_dbg_tag
Unexecuted instantiation: registry.c:WLog_Print_dbg_tag
Unexecuted instantiation: stream.c:WLog_Print_dbg_tag
Unexecuted instantiation: debug.c:WLog_Print_dbg_tag
Unexecuted instantiation: BitStream.c:WLog_Print_dbg_tag
Unexecuted instantiation: HashTable.c:WLog_Print_dbg_tag
Unexecuted instantiation: BufferPool.c:WLog_Print_dbg_tag
Unexecuted instantiation: ObjectPool.c:WLog_Print_dbg_tag
Unexecuted instantiation: wlog.c:WLog_Print_dbg_tag
Unexecuted instantiation: Appender.c:WLog_Print_dbg_tag
Unexecuted instantiation: FileAppender.c:WLog_Print_dbg_tag
Unexecuted instantiation: BinaryAppender.c:WLog_Print_dbg_tag
Unexecuted instantiation: CallbackAppender.c:WLog_Print_dbg_tag
Unexecuted instantiation: ConsoleAppender.c:WLog_Print_dbg_tag
Unexecuted instantiation: UdpAppender.c:WLog_Print_dbg_tag
Unexecuted instantiation: SyslogAppender.c:WLog_Print_dbg_tag
Unexecuted instantiation: sysinfo.c:WLog_Print_dbg_tag
Unexecuted instantiation: work.c:WLog_Print_dbg_tag
Unexecuted instantiation: pool.c:WLog_Print_dbg_tag
Unexecuted instantiation: handle.c:WLog_Print_dbg_tag
Unexecuted instantiation: apc.c:WLog_Print_dbg_tag
Unexecuted instantiation: process.c:WLog_Print_dbg_tag
Unexecuted instantiation: thread.c:WLog_Print_dbg_tag
Unexecuted instantiation: winsock.c:WLog_Print_dbg_tag
Unexecuted instantiation: alignment.c:WLog_Print_dbg_tag
Unexecuted instantiation: unicode.c:WLog_Print_dbg_tag
Unexecuted instantiation: string.c:WLog_Print_dbg_tag
Unexecuted instantiation: assert.c:WLog_Print_dbg_tag
Unexecuted instantiation: unicode_builtin.c:WLog_Print_dbg_tag
Unexecuted instantiation: critical.c:WLog_Print_dbg_tag
Unexecuted instantiation: event.c:WLog_Print_dbg_tag
Unexecuted instantiation: pollset.c:WLog_Print_dbg_tag
Unexecuted instantiation: wait.c:WLog_Print_dbg_tag
Unexecuted instantiation: generic.c:WLog_Print_dbg_tag
Unexecuted instantiation: namedPipeClient.c:WLog_Print_dbg_tag
Unexecuted instantiation: pattern.c:WLog_Print_dbg_tag
Unexecuted instantiation: file.c:WLog_Print_dbg_tag
Unexecuted instantiation: comm.c:WLog_Print_dbg_tag
Unexecuted instantiation: comm_ioctl.c:WLog_Print_dbg_tag
Unexecuted instantiation: comm_serial_sys.c:WLog_Print_dbg_tag
Unexecuted instantiation: comm_sercx_sys.c:WLog_Print_dbg_tag
Unexecuted instantiation: comm_sercx2_sys.c:WLog_Print_dbg_tag
Unexecuted instantiation: pipe.c:WLog_Print_dbg_tag
Unexecuted instantiation: environment.c:WLog_Print_dbg_tag
Unexecuted instantiation: registry_reg.c:WLog_Print_dbg_tag
Unexecuted instantiation: path.c:WLog_Print_dbg_tag
Unexecuted instantiation: shell.c:WLog_Print_dbg_tag
Unexecuted instantiation: Object.c:WLog_Print_dbg_tag
Unexecuted instantiation: Queue.c:WLog_Print_dbg_tag
Unexecuted instantiation: ArrayList.c:WLog_Print_dbg_tag
Unexecuted instantiation: CountdownEvent.c:WLog_Print_dbg_tag
Unexecuted instantiation: Layout.c:WLog_Print_dbg_tag
Unexecuted instantiation: Message.c:WLog_Print_dbg_tag
Unexecuted instantiation: DataMessage.c:WLog_Print_dbg_tag
Unexecuted instantiation: ImageMessage.c:WLog_Print_dbg_tag
Unexecuted instantiation: PacketMessage.c:WLog_Print_dbg_tag
Unexecuted instantiation: error.c:WLog_Print_dbg_tag
Unexecuted instantiation: argv.c:WLog_Print_dbg_tag
Unexecuted instantiation: nt.c:WLog_Print_dbg_tag
Unexecuted instantiation: comm_io.c:WLog_Print_dbg_tag
Unexecuted instantiation: image.c:WLog_Print_dbg_tag
Unexecuted instantiation: TestFuzzCommonAssistanceHexStringToBin.c:WLog_Print_dbg_tag
Unexecuted instantiation: assistance.c:WLog_Print_dbg_tag
Unexecuted instantiation: settings.c:WLog_Print_dbg_tag
Unexecuted instantiation: settings_getters.c:WLog_Print_dbg_tag
Unexecuted instantiation: settings_str.c:WLog_Print_dbg_tag
Unexecuted instantiation: privatekey.c:WLog_Print_dbg_tag
certificate.c:WLog_Print_dbg_tag
Line
Count
Source
204
2
  {
205
2
    static wLog* log_cached_ptr = NULL;
206
2
    if (!log_cached_ptr)
207
1
      log_cached_ptr = WLog_Get(tag);
208
209
2
    if (WLog_IsLevelActive(log_cached_ptr, log_level))
210
2
    {
211
2
      va_list ap;
212
2
      va_start(ap, fkt);
213
2
      WLog_PrintMessageVA(log_cached_ptr, WLOG_MESSAGE_TEXT, log_level, line, file, fkt, ap);
214
2
      va_end(ap);
215
2
    }
216
2
  }
Unexecuted instantiation: crypto.c:WLog_Print_dbg_tag
Unexecuted instantiation: capabilities.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdp.c:WLog_Print_dbg_tag
Unexecuted instantiation: tpdu.c:WLog_Print_dbg_tag
Unexecuted instantiation: tpkt.c:WLog_Print_dbg_tag
Unexecuted instantiation: fastpath.c:WLog_Print_dbg_tag
Unexecuted instantiation: surface.c:WLog_Print_dbg_tag
Unexecuted instantiation: transport.c:WLog_Print_dbg_tag
Unexecuted instantiation: update.c:WLog_Print_dbg_tag
Unexecuted instantiation: message.c:WLog_Print_dbg_tag
Unexecuted instantiation: channels.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdstls.c:WLog_Print_dbg_tag
Unexecuted instantiation: aad.c:WLog_Print_dbg_tag
Unexecuted instantiation: timer.c:WLog_Print_dbg_tag
Unexecuted instantiation: tsg.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdg.c:WLog_Print_dbg_tag
Unexecuted instantiation: rpc.c:WLog_Print_dbg_tag
Unexecuted instantiation: rpc_bind.c:WLog_Print_dbg_tag
Unexecuted instantiation: rpc_client.c:WLog_Print_dbg_tag
Unexecuted instantiation: rpc_fault.c:WLog_Print_dbg_tag
Unexecuted instantiation: rts.c:WLog_Print_dbg_tag
Unexecuted instantiation: rts_signature.c:WLog_Print_dbg_tag
Unexecuted instantiation: http.c:WLog_Print_dbg_tag
Unexecuted instantiation: websocket.c:WLog_Print_dbg_tag
Unexecuted instantiation: wst.c:WLog_Print_dbg_tag
Unexecuted instantiation: ncacn_http.c:WLog_Print_dbg_tag
Unexecuted instantiation: bulk.c:WLog_Print_dbg_tag
Unexecuted instantiation: pcap.c:WLog_Print_dbg_tag
Unexecuted instantiation: ringbuffer.c:WLog_Print_dbg_tag
Unexecuted instantiation: brush.c:WLog_Print_dbg_tag
Unexecuted instantiation: pointer.c:WLog_Print_dbg_tag
Unexecuted instantiation: bitmap.c:WLog_Print_dbg_tag
Unexecuted instantiation: persistent.c:WLog_Print_dbg_tag
Unexecuted instantiation: offscreen.c:WLog_Print_dbg_tag
Unexecuted instantiation: palette.c:WLog_Print_dbg_tag
Unexecuted instantiation: glyph.c:WLog_Print_dbg_tag
Unexecuted instantiation: cache.c:WLog_Print_dbg_tag
Unexecuted instantiation: ber.c:WLog_Print_dbg_tag
Unexecuted instantiation: per.c:WLog_Print_dbg_tag
Unexecuted instantiation: base64.c:WLog_Print_dbg_tag
x509_utils.c:WLog_Print_dbg_tag
Line
Count
Source
204
1.01k
  {
205
1.01k
    static wLog* log_cached_ptr = NULL;
206
1.01k
    if (!log_cached_ptr)
207
1
      log_cached_ptr = WLog_Get(tag);
208
209
1.01k
    if (WLog_IsLevelActive(log_cached_ptr, log_level))
210
1.01k
    {
211
1.01k
      va_list ap;
212
1.01k
      va_start(ap, fkt);
213
1.01k
      WLog_PrintMessageVA(log_cached_ptr, WLOG_MESSAGE_TEXT, log_level, line, file, fkt, ap);
214
1.01k
      va_end(ap);
215
1.01k
    }
216
1.01k
  }
Unexecuted instantiation: cert_common.c:WLog_Print_dbg_tag
Unexecuted instantiation: tls.c:WLog_Print_dbg_tag
Unexecuted instantiation: state.c:WLog_Print_dbg_tag
Unexecuted instantiation: utils.c:WLog_Print_dbg_tag
Unexecuted instantiation: activation.c:WLog_Print_dbg_tag
Unexecuted instantiation: mcs.c:WLog_Print_dbg_tag
Unexecuted instantiation: nla.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcardlogon.c:WLog_Print_dbg_tag
Unexecuted instantiation: nego.c:WLog_Print_dbg_tag
Unexecuted instantiation: info.c:WLog_Print_dbg_tag
Unexecuted instantiation: input.c:WLog_Print_dbg_tag
Unexecuted instantiation: license.c:WLog_Print_dbg_tag
Unexecuted instantiation: errinfo.c:WLog_Print_dbg_tag
Unexecuted instantiation: security.c:WLog_Print_dbg_tag
Unexecuted instantiation: orders.c:WLog_Print_dbg_tag
Unexecuted instantiation: freerdp.c:WLog_Print_dbg_tag
Unexecuted instantiation: graphics.c:WLog_Print_dbg_tag
Unexecuted instantiation: client.c:WLog_Print_dbg_tag
Unexecuted instantiation: server.c:WLog_Print_dbg_tag
Unexecuted instantiation: codecs.c:WLog_Print_dbg_tag
Unexecuted instantiation: metrics.c:WLog_Print_dbg_tag
Unexecuted instantiation: connection.c:WLog_Print_dbg_tag
Unexecuted instantiation: redirection.c:WLog_Print_dbg_tag
Unexecuted instantiation: autodetect.c:WLog_Print_dbg_tag
Unexecuted instantiation: heartbeat.c:WLog_Print_dbg_tag
Unexecuted instantiation: multitransport.c:WLog_Print_dbg_tag
Unexecuted instantiation: timezone.c:WLog_Print_dbg_tag
Unexecuted instantiation: childsession.c:WLog_Print_dbg_tag
Unexecuted instantiation: tcp.c:WLog_Print_dbg_tag
Unexecuted instantiation: proxy.c:WLog_Print_dbg_tag
Unexecuted instantiation: window.c:WLog_Print_dbg_tag
Unexecuted instantiation: peer.c:WLog_Print_dbg_tag
Unexecuted instantiation: display.c:WLog_Print_dbg_tag
Unexecuted instantiation: credssp_auth.c:WLog_Print_dbg_tag
Unexecuted instantiation: arm.c:WLog_Print_dbg_tag
Unexecuted instantiation: helpers.c:WLog_Print_dbg_tag
Unexecuted instantiation: signal.c:WLog_Print_dbg_tag
Unexecuted instantiation: addin.c:WLog_Print_dbg_tag
Unexecuted instantiation: gdi.c:WLog_Print_dbg_tag
Unexecuted instantiation: line.c:WLog_Print_dbg_tag
Unexecuted instantiation: pen.c:WLog_Print_dbg_tag
Unexecuted instantiation: shape.c:WLog_Print_dbg_tag
Unexecuted instantiation: nine_grid.c:WLog_Print_dbg_tag
Unexecuted instantiation: certificate_data.c:WLog_Print_dbg_tag
Unexecuted instantiation: certificate_store.c:WLog_Print_dbg_tag
Unexecuted instantiation: locale.c:WLog_Print_dbg_tag
Unexecuted instantiation: streamdump.c:WLog_Print_dbg_tag
Unexecuted instantiation: gcc.c:WLog_Print_dbg_tag
Unexecuted instantiation: errbase.c:WLog_Print_dbg_tag
Unexecuted instantiation: errconnect.c:WLog_Print_dbg_tag
Unexecuted instantiation: clipping.c:WLog_Print_dbg_tag
Unexecuted instantiation: dc.c:WLog_Print_dbg_tag
Unexecuted instantiation: drawing.c:WLog_Print_dbg_tag
Unexecuted instantiation: library.c:WLog_Print_dbg_tag
Unexecuted instantiation: hash.c:WLog_Print_dbg_tag
Unexecuted instantiation: cipher.c:WLog_Print_dbg_tag
Unexecuted instantiation: io.c:WLog_Print_dbg_tag
Unexecuted instantiation: ncrypt.c:WLog_Print_dbg_tag
Unexecuted instantiation: json.c:WLog_Print_dbg_tag
Unexecuted instantiation: sam.c:WLog_Print_dbg_tag
Unexecuted instantiation: print.c:WLog_Print_dbg_tag
Unexecuted instantiation: ssl.c:WLog_Print_dbg_tag
Unexecuted instantiation: PubSub.c:WLog_Print_dbg_tag
Unexecuted instantiation: ListDictionary.c:WLog_Print_dbg_tag
Unexecuted instantiation: StreamPool.c:WLog_Print_dbg_tag
Unexecuted instantiation: MessageQueue.c:WLog_Print_dbg_tag
Unexecuted instantiation: asn1.c:WLog_Print_dbg_tag
Unexecuted instantiation: sspi_winpr.c:WLog_Print_dbg_tag
Unexecuted instantiation: sspi.c:WLog_Print_dbg_tag
Unexecuted instantiation: wtsapi.c:WLog_Print_dbg_tag
Unexecuted instantiation: ncrypt_pkcs11.c:WLog_Print_dbg_tag
Unexecuted instantiation: ini.c:WLog_Print_dbg_tag
Unexecuted instantiation: TimeZoneNameMapUtils.c:WLog_Print_dbg_tag
Unexecuted instantiation: credssp.c:WLog_Print_dbg_tag
Unexecuted instantiation: ntlm.c:WLog_Print_dbg_tag
Unexecuted instantiation: kerberos.c:WLog_Print_dbg_tag
Unexecuted instantiation: krb5glue_mit.c:WLog_Print_dbg_tag
Unexecuted instantiation: negotiate.c:WLog_Print_dbg_tag
Unexecuted instantiation: schannel.c:WLog_Print_dbg_tag
Unexecuted instantiation: sspi_gss.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcard.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcard_pcsc.c:WLog_Print_dbg_tag
Unexecuted instantiation: ntlm_message.c:WLog_Print_dbg_tag
Unexecuted instantiation: schannel_openssl.c:WLog_Print_dbg_tag
Unexecuted instantiation: ntlm_av_pairs.c:WLog_Print_dbg_tag
Unexecuted instantiation: ntlm_compute.c:WLog_Print_dbg_tag
Unexecuted instantiation: TestFuzzCryptoCertificateDataSetPEM.c:WLog_Print_dbg_tag
Unexecuted instantiation: TestFuzzCoreServer.c:WLog_Print_dbg_tag
Unexecuted instantiation: TestFuzzCoreClient.c:WLog_Print_dbg_tag
Unexecuted instantiation: cmdline.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcard_cli.c:WLog_Print_dbg_tag
Unexecuted instantiation: tables.c:WLog_Print_dbg_tag
Unexecuted instantiation: drdynvc_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: remdesk_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpsnd_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpdr_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpdr_capabilities.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdp2tcp_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: rail_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: rail_orders.c:WLog_Print_dbg_tag
Unexecuted instantiation: encomsp_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: cliprdr_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: cliprdr_common.c:WLog_Print_dbg_tag
Unexecuted instantiation: video_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: sshagent_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpgfx_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpgfx_codec.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpgfx_common.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpei_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpei_common.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpear_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: location_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: geometry_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: echo_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: disp_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: disp_common.c:WLog_Print_dbg_tag
Unexecuted instantiation: audin_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: ainput_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcard_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: serial_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: parallel_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: drive_main.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpsnd_oss.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpsnd_fake.c:WLog_Print_dbg_tag
Unexecuted instantiation: audin_oss.c:WLog_Print_dbg_tag
Unexecuted instantiation: geometry.c:WLog_Print_dbg_tag
Unexecuted instantiation: generic_dynvc.c:WLog_Print_dbg_tag
Unexecuted instantiation: irp.c:WLog_Print_dbg_tag
Unexecuted instantiation: devman.c:WLog_Print_dbg_tag
Unexecuted instantiation: rail_common.c:WLog_Print_dbg_tag
Unexecuted instantiation: cliprdr_format.c:WLog_Print_dbg_tag
Unexecuted instantiation: drive_file.c:WLog_Print_dbg_tag
Unexecuted instantiation: dsp.c:WLog_Print_dbg_tag
Unexecuted instantiation: audio.c:WLog_Print_dbg_tag
Unexecuted instantiation: h264.c:WLog_Print_dbg_tag
Unexecuted instantiation: yuv.c:WLog_Print_dbg_tag
Unexecuted instantiation: encoded_types.c:WLog_Print_dbg_tag
Unexecuted instantiation: passphrase.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpdr_utils.c:WLog_Print_dbg_tag
Unexecuted instantiation: gfx.c:WLog_Print_dbg_tag
Unexecuted instantiation: drdynvc.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcard_operations.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcard_pack.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcard_call.c:WLog_Print_dbg_tag
Unexecuted instantiation: video.c:WLog_Print_dbg_tag
Unexecuted instantiation: keyboard_layout.c:WLog_Print_dbg_tag
Unexecuted instantiation: keyboard.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcard_emulate.c:WLog_Print_dbg_tag
Unexecuted instantiation: smartcard_virtual_gids.c:WLog_Print_dbg_tag
Unexecuted instantiation: LinkedList.c:WLog_Print_dbg_tag
Unexecuted instantiation: sspicli.c:WLog_Print_dbg_tag
Unexecuted instantiation: clipboard.c:WLog_Print_dbg_tag
Unexecuted instantiation: synthetic_file.c:WLog_Print_dbg_tag
Unexecuted instantiation: synthetic.c:WLog_Print_dbg_tag
Unexecuted instantiation: remdesk_common.c:WLog_Print_dbg_tag
Unexecuted instantiation: ndr.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpear_asn1.c:WLog_Print_dbg_tag
Unexecuted instantiation: rdpear_common.c:WLog_Print_dbg_tag
Unexecuted instantiation: TestFuzzCommonAssistanceParseFileBuffer.c:WLog_Print_dbg_tag
Unexecuted instantiation: TestFuzzCommonAssistanceBinToHexString.c:WLog_Print_dbg_tag
217
218
#define WLog_LVL(tag, lvl, ...) \
219
0
  WLog_Print_dbg_tag(tag, lvl, __LINE__, __FILE__, __func__, __VA_ARGS__)
220
#define WLog_VRB(tag, ...) \
221
0
  WLog_Print_dbg_tag(tag, WLOG_TRACE, __LINE__, __FILE__, __func__, __VA_ARGS__)
222
#define WLog_DBG(tag, ...) \
223
0
  WLog_Print_dbg_tag(tag, WLOG_DEBUG, __LINE__, __FILE__, __func__, __VA_ARGS__)
224
#define WLog_INFO(tag, ...) \
225
0
  WLog_Print_dbg_tag(tag, WLOG_INFO, __LINE__, __FILE__, __func__, __VA_ARGS__)
226
#define WLog_WARN(tag, ...) \
227
49
  WLog_Print_dbg_tag(tag, WLOG_WARN, __LINE__, __FILE__, __func__, __VA_ARGS__)
228
#define WLog_ERR(tag, ...) \
229
969
  WLog_Print_dbg_tag(tag, WLOG_ERROR, __LINE__, __FILE__, __func__, __VA_ARGS__)
230
#define WLog_FATAL(tag, ...) \
231
0
  WLog_Print_dbg_tag(tag, WLOG_FATAL, __LINE__, __FILE__, __func__, __VA_ARGS__)
232
233
  WINPR_API BOOL WLog_SetLogLevel(wLog* log, DWORD logLevel);
234
  WINPR_API BOOL WLog_SetStringLogLevel(wLog* log, LPCSTR level);
235
  WINPR_API BOOL WLog_AddStringLogFilters(LPCSTR filter);
236
237
  WINPR_API BOOL WLog_SetLogAppenderType(wLog* log, DWORD logAppenderType);
238
  WINPR_API wLogAppender* WLog_GetLogAppender(wLog* log);
239
  WINPR_API BOOL WLog_OpenAppender(wLog* log);
240
  WINPR_API BOOL WLog_CloseAppender(wLog* log);
241
  WINPR_API BOOL WLog_ConfigureAppender(wLogAppender* appender, const char* setting, void* value);
242
243
  WINPR_API wLogLayout* WLog_GetLogLayout(wLog* log);
244
  WINPR_API BOOL WLog_Layout_SetPrefixFormat(wLog* log, wLogLayout* layout, const char* format);
245
246
#if defined(WITH_WINPR_DEPRECATED)
247
  /** Deprecated */
248
  WINPR_DEPRECATED(WINPR_API BOOL WLog_Init(void));
249
  /** Deprecated */
250
  WINPR_DEPRECATED(WINPR_API BOOL WLog_Uninit(void));
251
#endif
252
253
  typedef BOOL (*wLogCallbackMessage_t)(const wLogMessage* msg);
254
  typedef BOOL (*wLogCallbackData_t)(const wLogMessage* msg);
255
  typedef BOOL (*wLogCallbackImage_t)(const wLogMessage* msg);
256
  typedef BOOL (*wLogCallbackPackage_t)(const wLogMessage* msg);
257
258
  typedef struct
259
  {
260
    wLogCallbackData_t data;
261
    wLogCallbackImage_t image;
262
    wLogCallbackMessage_t message;
263
    wLogCallbackPackage_t package;
264
  } wLogCallbacks;
265
266
#ifdef __cplusplus
267
}
268
#endif
269
270
#endif /* WINPR_WLOG_H */