libwebsockets
Lightweight C library for HTML5 websockets
Loading...
Searching...
No Matches
Logging

Data Structures

struct  lws_log_cx
union  lws_log_cx::[union].u
struct  lws_log_ratelimit

Macros

#define LLL_ERR   (1 << 0)
#define LLL_WARN   (1 << 1)
#define LLL_NOTICE   (1 << 2)
#define LLL_INFO   (1 << 3)
#define LLL_DEBUG   (1 << 4)
#define LLL_PARSER   (1 << 5)
#define LLL_HEADER   (1 << 6)
#define LLL_EXT   (1 << 7)
#define LLL_CLIENT   (1 << 8)
#define LLL_LATENCY   (1 << 9)
#define LLL_USER   (1 << 10)
#define LLL_THREAD   (1 << 11)
#define LLL_COUNT   (12)
#define LLLF_SECRECY_PII   (1 << 16)
#define LLLF_SECRECY_BEARER   (1 << 17)
#define LLLF_LOG_TIMESTAMP   (1 << 18)
#define LLLF_LOG_SPEW_OFF   (1 << 19)
#define LLLF_LOG_CONTEXT_AWARE   (1 << 30)
#define LWS_RATELIMIT_DEFINE_STATIC(_name)
#define lwsl_cx(_c, _fil, ...)
#define lwsl_vhost(_v, _fil, ...)
#define lwsl_wsi(_w, _fil, ...)
#define lwsl_ss(_h, _fil, ...)
#define lwsl_hexdump_context(_c, _fil, _buf, _len)
#define lwsl_hexdump_vhost(_v, _fil, _buf, _len)
#define lwsl_hexdump_wsi(_w, _fil, _buf, _len)
#define lwsl_hexdump_ss(_h, _fil, _buf, _len)
#define _LWS_LINIT   (LLL_ERR | LLL_USER | LLL_WARN | LLL_NOTICE)
#define _LWS_LBS   0
#define _LWS_LBC   0
#define _LWS_ENABLED_LOGS   (((_LWS_LINIT) | (_LWS_LBS)) & ~(_LWS_LBC))
#define lwsl_err(...)
#define lwsl_warn(...)
#define lwsl_notice(...)
#define lwsl_info(...)
#define lwsl_debug(...)
#define lwsl_parser(...)
#define lwsl_header(...)
#define lwsl_ext(...)
#define lwsl_client(...)
#define lwsl_latency(...)
#define lwsl_thread(...)
#define lwsl_user(...)
#define lwsl_hexdump_user(...)
#define lwsl_hexdump_err(...)
#define lwsl_hexdump_warn(...)
#define lwsl_hexdump_notice(...)
#define lwsl_hexdump_info(...)
#define lwsl_hexdump_debug(...)
#define lwsl_cx_err(_c, ...)
#define lwsl_cx_warn(_c, ...)
#define lwsl_cx_notice(_c, ...)
#define lwsl_cx_info(_c, ...)
#define lwsl_cx_debug(_c, ...)
#define lwsl_cx_parser(_c, ...)
#define lwsl_cx_header(_c, ...)
#define lwsl_cx_ext(_c, ...)
#define lwsl_cx_client(_c, ...)
#define lwsl_cx_latency(_c, ...)
#define lwsl_cx_thread(_c, ...)
#define lwsl_cx_user(_c, ...)
#define lwsl_hexdump_cx_err(_c, ...)
#define lwsl_hexdump_cx_warn(_c, ...)
#define lwsl_hexdump_cx_notice(_c, ...)
#define lwsl_hexdump_cx_info(_c, ...)
#define lwsl_hexdump_cx_debug(_c, ...)
#define lwsl_vhost_err(_v, ...)
#define lwsl_vhost_warn(_v, ...)
#define lwsl_vhost_notice(_v, ...)
#define lwsl_vhost_info(_v, ...)
#define lwsl_vhost_debug(_v, ...)
#define lwsl_vhost_parser(_v, ...)
#define lwsl_vhost_header(_v, ...)
#define lwsl_vhost_ext(_v, ...)
#define lwsl_vhost_client(_v, ...)
#define lwsl_vhost_latency(_v, ...)
#define lwsl_vhost_thread(_v, ...)
#define lwsl_vhost_user(_v, ...)
#define lwsl_hexdump_vhost_err(_v, ...)
#define lwsl_hexdump_vhost_warn(_v, ...)
#define lwsl_hexdump_vhost_notice(_v, ...)
#define lwsl_hexdump_vhost_info(_v, ...)
#define lwsl_hexdump_vhost_debug(_v, ...)
#define lwsl_wsi_err(_w, ...)
#define lwsl_wsi_warn(_w, ...)
#define lwsl_wsi_notice(_w, ...)
#define lwsl_wsi_info(_w, ...)
#define lwsl_wsi_debug(_w, ...)
#define lwsl_wsi_parser(_w, ...)
#define lwsl_wsi_header(_w, ...)
#define lwsl_wsi_ext(_w, ...)
#define lwsl_wsi_client(_w, ...)
#define lwsl_wsi_latency(_w, ...)
#define lwsl_wsi_thread(_w, ...)
#define lwsl_wsi_user(_w, ...)
#define lwsl_hexdump_wsi_err(_v, ...)
#define lwsl_hexdump_wsi_warn(_v, ...)
#define lwsl_hexdump_wsi_notice(_v, ...)
#define lwsl_hexdump_wsi_info(_v, ...)
#define lwsl_hexdump_wsi_debug(_v, ...)
#define lwsl_hexdump_wsi_user(_v, ...)
#define lwsl_ss_err(_w, ...)
#define lwsl_ss_warn(_w, ...)
#define lwsl_ss_notice(_w, ...)
#define lwsl_ss_info(_w, ...)
#define lwsl_ss_debug(_w, ...)
#define lwsl_ss_parser(_w, ...)
#define lwsl_ss_header(_w, ...)
#define lwsl_ss_ext(_w, ...)
#define lwsl_ss_client(_w, ...)
#define lwsl_ss_latency(_w, ...)
#define lwsl_ss_thread(_w, ...)
#define lwsl_ss_user(_w, ...)
#define lwsl_hexdump_ss_err(_v, ...)
#define lwsl_hexdump_ss_warn(_v, ...)
#define lwsl_hexdump_ss_notice(_v, ...)
#define lwsl_hexdump_ss_info(_v, ...)
#define lwsl_hexdump_ss_debug(_v, ...)

Typedefs

typedef void(* lws_log_emit_t) (int level, const char *line)
typedef void(* lws_log_emit_cx_t) (struct lws_log_cx *cx, int level, const char *line, size_t len)
typedef void(* lws_log_prepend_cx_t) (struct lws_log_cx *cx, void *obj, char **p, char *e)
typedef void(* lws_log_use_cx_t) (struct lws_log_cx *cx, int _new)
typedef struct lws_log_cx lws_log_cx_t
typedef struct lws_log_ratelimit lws_log_ratelimit_t

Functions

LWS_VISIBLE LWS_EXTERN int lwsl_timestamp (int level, char *p, size_t len)
LWS_VISIBLE LWS_EXTERN uint32_t lws_log_ratelimit_check (lws_log_ratelimit_t *rl, int64_t interval_us)
LWS_VISIBLE LWS_EXTERN void _lws_log_rl (int filter, uint32_t dropped, const char *format,...) LWS_FORMAT(3)
LWS_VISIBLE LWS_EXTERN void _lws_log_cx_rl (lws_log_cx_t *cx, lws_log_prepend_cx_t prep, void *obj, int filter, uint32_t dropped, const char *_fun, const char *format,...) LWS_FORMAT(7)
LWS_VISIBLE LWS_EXTERN void _lws_log (int filter, const char *format,...) LWS_FORMAT(2)
LWS_VISIBLE LWS_EXTERN void _lws_logv (int filter, const char *format, va_list vl)
LWS_VISIBLE LWS_EXTERN struct lws_log_cx * lwsl_context_get_cx (struct lws_context *cx)
LWS_VISIBLE LWS_EXTERN struct lws_log_cx * lwsl_vhost_get_cx (struct lws_vhost *vh)
LWS_VISIBLE LWS_EXTERN struct lws_log_cx * lwsl_wsi_get_cx (struct lws *wsi)
LWS_VISIBLE LWS_EXTERN void lws_log_emit_cx_file (struct lws_log_cx *cx, int level, const char *line, size_t len)
LWS_VISIBLE LWS_EXTERN void lws_log_use_cx_file (struct lws_log_cx *cx, int _new)
LWS_VISIBLE LWS_EXTERN void lws_log_prepend_context (struct lws_log_cx *cx, void *obj, char **p, char *e)
LWS_VISIBLE LWS_EXTERN void lws_log_prepend_vhost (struct lws_log_cx *cx, void *obj, char **p, char *e)
LWS_VISIBLE LWS_EXTERN void lws_log_prepend_wsi (struct lws_log_cx *cx, void *obj, char **p, char *e)
LWS_VISIBLE LWS_EXTERN void _lws_log_cx (lws_log_cx_t *cx, lws_log_prepend_cx_t prep, void *obj, int filter, const char *_fun, const char *format,...) LWS_FORMAT(6)
LWS_VISIBLE LWS_EXTERN void lwsl_hexdump_level (int level, const void *vbuf, size_t len)
LWS_VISIBLE LWS_EXTERN void lwsl_hexdump_level_cx (lws_log_cx_t *cx, lws_log_prepend_cx_t prep, void *obj, int hexdump_level, const void *vbuf, size_t len)
LWS_VISIBLE LWS_EXTERN void lwsl_hexdump (const void *buf, size_t len)
LWS_VISIBLE LWS_EXTERN void lws_set_log_level (int level, lws_log_emit_t log_emit_function)
LWS_VISIBLE LWS_EXTERN void lws_log_spew_tail_lines (unsigned int lines)
LWS_VISIBLE LWS_EXTERN void lwsl_emit_syslog (int level, const char *line)
LWS_VISIBLE LWS_EXTERN void lwsl_emit_stderr (int level, const char *line)
LWS_VISIBLE LWS_EXTERN void lwsl_emit_stderr_notimestamp (int level, const char *line)
LWS_VISIBLE LWS_EXTERN int lwsl_visible (int level)
LWS_VISIBLE LWS_EXTERN const char * lws_wsi_tag (struct lws *wsi)
LWS_VISIBLE LWS_EXTERN void lwsl_refcount_cx (lws_log_cx_t *cx, int _new)

Detailed Description

Logging

Lws provides flexible and filterable logging facilities, which can be used inside lws and in user code.

Log categories may be individually filtered bitwise, and directed to built-in sinks for syslog-compatible logging, or a user-defined function.

Traditional logs use a single, processwide logging context. New style log apis (lws_xxx_cx()) can pass the logging context to use in.


Data Structure Documentation

◆ lws_log_cx::[union].u

union lws_log_cx::[union].u

Definition at line 86 of file lws-logs.h.

Collaboration diagram for lws_log_cx::[union].u:
Data Fields
lws_log_emit_t emit
lws_log_emit_cx_t emit_cx

◆ lws_log_ratelimit

struct lws_log_ratelimit

Definition at line 133 of file lws-logs.h.

Collaboration diagram for lws_log_ratelimit:
Data Fields
int64_t next_log_us
uint32_t dropped

Macro Definition Documentation

◆ LLL_ERR

#define LLL_ERR   (1 << 0)

#include <lws-logs.h>

Definition at line 40 of file lws-logs.h.

◆ LLL_WARN

#define LLL_WARN   (1 << 1)

#include <lws-logs.h>

Definition at line 41 of file lws-logs.h.

◆ LLL_NOTICE

#define LLL_NOTICE   (1 << 2)

#include <lws-logs.h>

Definition at line 42 of file lws-logs.h.

◆ LLL_INFO

#define LLL_INFO   (1 << 3)

#include <lws-logs.h>

Definition at line 43 of file lws-logs.h.

◆ LLL_DEBUG

#define LLL_DEBUG   (1 << 4)

#include <lws-logs.h>

Definition at line 44 of file lws-logs.h.

◆ LLL_PARSER

#define LLL_PARSER   (1 << 5)

#include <lws-logs.h>

Definition at line 45 of file lws-logs.h.

◆ LLL_HEADER

#define LLL_HEADER   (1 << 6)

#include <lws-logs.h>

Definition at line 46 of file lws-logs.h.

◆ LLL_EXT

#define LLL_EXT   (1 << 7)

#include <lws-logs.h>

Definition at line 47 of file lws-logs.h.

◆ LLL_CLIENT

#define LLL_CLIENT   (1 << 8)

#include <lws-logs.h>

Definition at line 48 of file lws-logs.h.

◆ LLL_LATENCY

#define LLL_LATENCY   (1 << 9)

#include <lws-logs.h>

Definition at line 49 of file lws-logs.h.

◆ LLL_USER

#define LLL_USER   (1 << 10)

#include <lws-logs.h>

Definition at line 50 of file lws-logs.h.

◆ LLL_THREAD

#define LLL_THREAD   (1 << 11)

#include <lws-logs.h>

Definition at line 51 of file lws-logs.h.

◆ LLL_COUNT

#define LLL_COUNT   (12)

#include <lws-logs.h>

Definition at line 53 of file lws-logs.h.

◆ LLLF_SECRECY_PII

#define LLLF_SECRECY_PII   (1 << 16)

#include <lws-logs.h>

contains Personally Identifiable Information

Definition at line 55 of file lws-logs.h.

◆ LLLF_SECRECY_BEARER

#define LLLF_SECRECY_BEARER   (1 << 17)

#include <lws-logs.h>

possession of this data allows impersonation

Definition at line 57 of file lws-logs.h.

◆ LLLF_LOG_TIMESTAMP

#define LLLF_LOG_TIMESTAMP   (1 << 18)

#include <lws-logs.h>

set to prepend logs with timestamp

Definition at line 60 of file lws-logs.h.

◆ LLLF_LOG_SPEW_OFF

#define LLLF_LOG_SPEW_OFF   (1 << 19)

#include <lws-logs.h>

set to exempt this log context from spew handling: normally when logs are being emitted faster than anything can absorb them, lws stops emitting them and retains only the most recent tail of the spew in a ringbuffer, replaying that when the rate eases off

Definition at line 62 of file lws-logs.h.

◆ LLLF_LOG_CONTEXT_AWARE

#define LLLF_LOG_CONTEXT_AWARE   (1 << 30)

#include <lws-logs.h>

set if the context uses an emit function that takes the logctx, auto- applied when setting emit using lws_set_log_level_cx() api

Definition at line 68 of file lws-logs.h.

◆ LWS_RATELIMIT_DEFINE_STATIC

#define LWS_RATELIMIT_DEFINE_STATIC ( _name)

#include <lws-logs.h>

Value:
static lws_log_ratelimit_t _name = { 0, 0 }
struct lws_log_ratelimit lws_log_ratelimit_t

Definition at line 138 of file lws-logs.h.

◆ lwsl_cx

#define lwsl_cx ( _c,
_fil,
... )

#include <lws-logs.h>

Value:
_c, _fil, __func__, __VA_ARGS__)
LWS_VISIBLE LWS_EXTERN struct lws_log_cx * lwsl_context_get_cx(struct lws_context *cx)
LWS_VISIBLE LWS_EXTERN void _lws_log_cx(lws_log_cx_t *cx, lws_log_prepend_cx_t prep, void *obj, int filter, const char *_fun, const char *format,...) LWS_FORMAT(6)
LWS_VISIBLE LWS_EXTERN void lws_log_prepend_context(struct lws_log_cx *cx, void *obj, char **p, char *e)

Definition at line 207 of file lws-logs.h.

◆ lwsl_vhost

#define lwsl_vhost ( _v,
_fil,
... )

#include <lws-logs.h>

Value:
_fil, __func__, __VA_ARGS__)
LWS_VISIBLE LWS_EXTERN void lws_log_prepend_vhost(struct lws_log_cx *cx, void *obj, char **p, char *e)
LWS_VISIBLE LWS_EXTERN struct lws_log_cx * lwsl_vhost_get_cx(struct lws_vhost *vh)

Definition at line 210 of file lws-logs.h.

◆ lwsl_wsi

#define lwsl_wsi ( _w,
_fil,
... )

#include <lws-logs.h>

Value:
_fil, __func__, __VA_ARGS__)
LWS_VISIBLE LWS_EXTERN struct lws_log_cx * lwsl_wsi_get_cx(struct lws *wsi)
LWS_VISIBLE LWS_EXTERN void lws_log_prepend_wsi(struct lws_log_cx *cx, void *obj, char **p, char *e)

Definition at line 213 of file lws-logs.h.

◆ lwsl_ss

#define lwsl_ss ( _h,
_fil,
... )

#include <lws-logs.h>

Value:
_lws_log_cx(lwsl_ss_get_cx(_h), lws_log_prepend_ss, _h, \
_fil, __func__, __VA_ARGS__)

Definition at line 216 of file lws-logs.h.

◆ lwsl_hexdump_context

#define lwsl_hexdump_context ( _c,
_fil,
_buf,
_len )

#include <lws-logs.h>

Value:
_c, _fil, _buf, _len)
LWS_VISIBLE LWS_EXTERN void lwsl_hexdump_level_cx(lws_log_cx_t *cx, lws_log_prepend_cx_t prep, void *obj, int hexdump_level, const void *vbuf, size_t len)

Definition at line 220 of file lws-logs.h.

◆ lwsl_hexdump_vhost

#define lwsl_hexdump_vhost ( _v,
_fil,
_buf,
_len )

#include <lws-logs.h>

Value:

Definition at line 224 of file lws-logs.h.

◆ lwsl_hexdump_wsi

#define lwsl_hexdump_wsi ( _w,
_fil,
_buf,
_len )

#include <lws-logs.h>

Value:

Definition at line 228 of file lws-logs.h.

◆ lwsl_hexdump_ss

#define lwsl_hexdump_ss ( _h,
_fil,
_buf,
_len )

#include <lws-logs.h>

Value:
lwsl_hexdump_level_cx(lwsl_ss_get_cx(_h), \
lws_log_prepend_ss, \
_h, _fil, _buf, _len)

Definition at line 232 of file lws-logs.h.

◆ _LWS_LINIT

#define _LWS_LINIT   (LLL_ERR | LLL_USER | LLL_WARN | LLL_NOTICE)

#include <lws-logs.h>

Definition at line 254 of file lws-logs.h.

◆ _LWS_LBS

#define _LWS_LBS   0

#include <lws-logs.h>

Definition at line 270 of file lws-logs.h.

◆ _LWS_LBC

#define _LWS_LBC   0

#include <lws-logs.h>

Definition at line 276 of file lws-logs.h.

◆ _LWS_ENABLED_LOGS

#define _LWS_ENABLED_LOGS   (((_LWS_LINIT) | (_LWS_LBS)) & ~(_LWS_LBC))

#include <lws-logs.h>

Definition at line 282 of file lws-logs.h.

◆ lwsl_err

#define lwsl_err ( ...)

#include <lws-logs.h>

Value:
_lws_log(LLL_ERR, __VA_ARGS__)
LWS_VISIBLE LWS_EXTERN void _lws_log(int filter, const char *format,...) LWS_FORMAT(2)
#define LLL_ERR
Definition lws-logs.h:40

Definition at line 294 of file lws-logs.h.

◆ lwsl_warn

#define lwsl_warn ( ...)

#include <lws-logs.h>

Value:
_lws_log(LLL_WARN, __VA_ARGS__)
#define LLL_WARN
Definition lws-logs.h:41

Definition at line 300 of file lws-logs.h.

◆ lwsl_notice

#define lwsl_notice ( ...)

#include <lws-logs.h>

Value:
_lws_log(LLL_NOTICE, __VA_ARGS__)
#define LLL_NOTICE
Definition lws-logs.h:42

Definition at line 306 of file lws-logs.h.

◆ lwsl_info

#define lwsl_info ( ...)

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 314 of file lws-logs.h.

◆ lwsl_debug

#define lwsl_debug ( ...)

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 320 of file lws-logs.h.

◆ lwsl_parser

#define lwsl_parser ( ...)

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 326 of file lws-logs.h.

◆ lwsl_header

#define lwsl_header ( ...)

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 332 of file lws-logs.h.

◆ lwsl_ext

#define lwsl_ext ( ...)

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 338 of file lws-logs.h.

◆ lwsl_client

#define lwsl_client ( ...)

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 344 of file lws-logs.h.

◆ lwsl_latency

#define lwsl_latency ( ...)

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 350 of file lws-logs.h.

◆ lwsl_thread

#define lwsl_thread ( ...)

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 356 of file lws-logs.h.

◆ lwsl_user

#define lwsl_user ( ...)

#include <lws-logs.h>

Value:
_lws_log(LLL_USER, __VA_ARGS__)
#define LLL_USER
Definition lws-logs.h:50

Definition at line 360 of file lws-logs.h.

◆ lwsl_hexdump_user

#define lwsl_hexdump_user ( ...)

#include <lws-logs.h>

Value:
LWS_VISIBLE LWS_EXTERN void lwsl_hexdump_level(int level, const void *vbuf, size_t len)

Definition at line 365 of file lws-logs.h.

◆ lwsl_hexdump_err

#define lwsl_hexdump_err ( ...)

#include <lws-logs.h>

Value:

Definition at line 366 of file lws-logs.h.

◆ lwsl_hexdump_warn

#define lwsl_hexdump_warn ( ...)

#include <lws-logs.h>

Value:

Definition at line 367 of file lws-logs.h.

◆ lwsl_hexdump_notice

#define lwsl_hexdump_notice ( ...)

#include <lws-logs.h>

Value:

Definition at line 368 of file lws-logs.h.

◆ lwsl_hexdump_info

#define lwsl_hexdump_info ( ...)

#include <lws-logs.h>

Value:
#define LLL_INFO
Definition lws-logs.h:43

Definition at line 369 of file lws-logs.h.

◆ lwsl_hexdump_debug

#define lwsl_hexdump_debug ( ...)

#include <lws-logs.h>

Value:
#define LLL_DEBUG
Definition lws-logs.h:44

Definition at line 370 of file lws-logs.h.

◆ lwsl_cx_err

#define lwsl_cx_err ( _c,
... )

#include <lws-logs.h>

Value:
lwsl_cx(_c, LLL_ERR, __VA_ARGS__)
#define lwsl_cx(_c, _fil,...)
Definition lws-logs.h:207

Definition at line 377 of file lws-logs.h.

◆ lwsl_cx_warn

#define lwsl_cx_warn ( _c,
... )

#include <lws-logs.h>

Value:
lwsl_cx(_c, LLL_WARN, __VA_ARGS__)

Definition at line 383 of file lws-logs.h.

◆ lwsl_cx_notice

#define lwsl_cx_notice ( _c,
... )

#include <lws-logs.h>

Value:
lwsl_cx(_c, LLL_NOTICE, __VA_ARGS__)

Definition at line 389 of file lws-logs.h.

◆ lwsl_cx_info

#define lwsl_cx_info ( _c,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 397 of file lws-logs.h.

◆ lwsl_cx_debug

#define lwsl_cx_debug ( _c,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 403 of file lws-logs.h.

◆ lwsl_cx_parser

#define lwsl_cx_parser ( _c,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 409 of file lws-logs.h.

◆ lwsl_cx_header

#define lwsl_cx_header ( _c,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 415 of file lws-logs.h.

◆ lwsl_cx_ext

#define lwsl_cx_ext ( _c,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 421 of file lws-logs.h.

◆ lwsl_cx_client

#define lwsl_cx_client ( _c,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 427 of file lws-logs.h.

◆ lwsl_cx_latency

#define lwsl_cx_latency ( _c,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 433 of file lws-logs.h.

◆ lwsl_cx_thread

#define lwsl_cx_thread ( _c,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 439 of file lws-logs.h.

◆ lwsl_cx_user

#define lwsl_cx_user ( _c,
... )

#include <lws-logs.h>

Value:
lwsl_cx(_c, LLL_USER, __VA_ARGS__)

Definition at line 443 of file lws-logs.h.

◆ lwsl_hexdump_cx_err

#define lwsl_hexdump_cx_err ( _c,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_context(_c, LLL_ERR, __VA_ARGS__)
#define lwsl_hexdump_context(_c, _fil, _buf, _len)
Definition lws-logs.h:220

Definition at line 448 of file lws-logs.h.

◆ lwsl_hexdump_cx_warn

#define lwsl_hexdump_cx_warn ( _c,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_context(_c, LLL_WARN, __VA_ARGS__)

Definition at line 449 of file lws-logs.h.

◆ lwsl_hexdump_cx_notice

#define lwsl_hexdump_cx_notice ( _c,
... )

#include <lws-logs.h>

Value:

Definition at line 450 of file lws-logs.h.

◆ lwsl_hexdump_cx_info

#define lwsl_hexdump_cx_info ( _c,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_context(_c, LLL_INFO, __VA_ARGS__)

Definition at line 451 of file lws-logs.h.

◆ lwsl_hexdump_cx_debug

#define lwsl_hexdump_cx_debug ( _c,
... )

#include <lws-logs.h>

Value:

Definition at line 452 of file lws-logs.h.

◆ lwsl_vhost_err

#define lwsl_vhost_err ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_vhost(_v, LLL_ERR, __VA_ARGS__)
#define lwsl_vhost(_v, _fil,...)
Definition lws-logs.h:210

Definition at line 459 of file lws-logs.h.

◆ lwsl_vhost_warn

#define lwsl_vhost_warn ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_vhost(_v, LLL_WARN, __VA_ARGS__)

Definition at line 465 of file lws-logs.h.

◆ lwsl_vhost_notice

#define lwsl_vhost_notice ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_vhost(_v, LLL_NOTICE, __VA_ARGS__)

Definition at line 471 of file lws-logs.h.

◆ lwsl_vhost_info

#define lwsl_vhost_info ( _v,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 479 of file lws-logs.h.

◆ lwsl_vhost_debug

#define lwsl_vhost_debug ( _v,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 485 of file lws-logs.h.

◆ lwsl_vhost_parser

#define lwsl_vhost_parser ( _v,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 491 of file lws-logs.h.

◆ lwsl_vhost_header

#define lwsl_vhost_header ( _v,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 497 of file lws-logs.h.

◆ lwsl_vhost_ext

#define lwsl_vhost_ext ( _v,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 503 of file lws-logs.h.

◆ lwsl_vhost_client

#define lwsl_vhost_client ( _v,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 509 of file lws-logs.h.

◆ lwsl_vhost_latency

#define lwsl_vhost_latency ( _v,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 515 of file lws-logs.h.

◆ lwsl_vhost_thread

#define lwsl_vhost_thread ( _v,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 521 of file lws-logs.h.

◆ lwsl_vhost_user

#define lwsl_vhost_user ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_vhost(_v, LLL_USER, __VA_ARGS__)

Definition at line 525 of file lws-logs.h.

◆ lwsl_hexdump_vhost_err

#define lwsl_hexdump_vhost_err ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_vhost(_v, LLL_ERR, __VA_ARGS__)
#define lwsl_hexdump_vhost(_v, _fil, _buf, _len)
Definition lws-logs.h:224

Definition at line 530 of file lws-logs.h.

◆ lwsl_hexdump_vhost_warn

#define lwsl_hexdump_vhost_warn ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_vhost(_v, LLL_WARN, __VA_ARGS__)

Definition at line 531 of file lws-logs.h.

◆ lwsl_hexdump_vhost_notice

#define lwsl_hexdump_vhost_notice ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_vhost(_v, LLL_NOTICE, __VA_ARGS__)

Definition at line 532 of file lws-logs.h.

◆ lwsl_hexdump_vhost_info

#define lwsl_hexdump_vhost_info ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_vhost(_v, LLL_INFO, __VA_ARGS__)

Definition at line 533 of file lws-logs.h.

◆ lwsl_hexdump_vhost_debug

#define lwsl_hexdump_vhost_debug ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_vhost(_v, LLL_DEBUG, __VA_ARGS__)

Definition at line 534 of file lws-logs.h.

◆ lwsl_wsi_err

#define lwsl_wsi_err ( _w,
... )

#include <lws-logs.h>

Value:
lwsl_wsi(_w, LLL_ERR, __VA_ARGS__)
#define lwsl_wsi(_w, _fil,...)
Definition lws-logs.h:213

Definition at line 542 of file lws-logs.h.

◆ lwsl_wsi_warn

#define lwsl_wsi_warn ( _w,
... )

#include <lws-logs.h>

Value:
lwsl_wsi(_w, LLL_WARN, __VA_ARGS__)

Definition at line 548 of file lws-logs.h.

◆ lwsl_wsi_notice

#define lwsl_wsi_notice ( _w,
... )

#include <lws-logs.h>

Value:
lwsl_wsi(_w, LLL_NOTICE, __VA_ARGS__)

Definition at line 554 of file lws-logs.h.

◆ lwsl_wsi_info

#define lwsl_wsi_info ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 562 of file lws-logs.h.

◆ lwsl_wsi_debug

#define lwsl_wsi_debug ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 568 of file lws-logs.h.

◆ lwsl_wsi_parser

#define lwsl_wsi_parser ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 574 of file lws-logs.h.

◆ lwsl_wsi_header

#define lwsl_wsi_header ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 580 of file lws-logs.h.

◆ lwsl_wsi_ext

#define lwsl_wsi_ext ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 586 of file lws-logs.h.

◆ lwsl_wsi_client

#define lwsl_wsi_client ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 592 of file lws-logs.h.

◆ lwsl_wsi_latency

#define lwsl_wsi_latency ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 598 of file lws-logs.h.

◆ lwsl_wsi_thread

#define lwsl_wsi_thread ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 604 of file lws-logs.h.

◆ lwsl_wsi_user

#define lwsl_wsi_user ( _w,
... )

#include <lws-logs.h>

Value:
lwsl_wsi(_w, LLL_USER, __VA_ARGS__)

Definition at line 608 of file lws-logs.h.

◆ lwsl_hexdump_wsi_err

#define lwsl_hexdump_wsi_err ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_wsi(_v, LLL_ERR, __VA_ARGS__)
#define lwsl_hexdump_wsi(_w, _fil, _buf, _len)
Definition lws-logs.h:228

Definition at line 613 of file lws-logs.h.

◆ lwsl_hexdump_wsi_warn

#define lwsl_hexdump_wsi_warn ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_wsi(_v, LLL_WARN, __VA_ARGS__)

Definition at line 614 of file lws-logs.h.

◆ lwsl_hexdump_wsi_notice

#define lwsl_hexdump_wsi_notice ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_wsi(_v, LLL_NOTICE, __VA_ARGS__)

Definition at line 615 of file lws-logs.h.

◆ lwsl_hexdump_wsi_info

#define lwsl_hexdump_wsi_info ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_wsi(_v, LLL_INFO, __VA_ARGS__)

Definition at line 616 of file lws-logs.h.

◆ lwsl_hexdump_wsi_debug

#define lwsl_hexdump_wsi_debug ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_wsi(_v, LLL_DEBUG, __VA_ARGS__)

Definition at line 617 of file lws-logs.h.

◆ lwsl_hexdump_wsi_user

#define lwsl_hexdump_wsi_user ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_wsi(_v, LLL_USER, __VA_ARGS__)

Definition at line 618 of file lws-logs.h.

◆ lwsl_ss_err

#define lwsl_ss_err ( _w,
... )

#include <lws-logs.h>

Value:
lwsl_ss(_w, LLL_ERR, __VA_ARGS__)
#define lwsl_ss(_h, _fil,...)
Definition lws-logs.h:216

Definition at line 627 of file lws-logs.h.

◆ lwsl_ss_warn

#define lwsl_ss_warn ( _w,
... )

#include <lws-logs.h>

Value:
lwsl_ss(_w, LLL_WARN, __VA_ARGS__)

Definition at line 633 of file lws-logs.h.

◆ lwsl_ss_notice

#define lwsl_ss_notice ( _w,
... )

#include <lws-logs.h>

Value:
lwsl_ss(_w, LLL_NOTICE, __VA_ARGS__)

Definition at line 639 of file lws-logs.h.

◆ lwsl_ss_info

#define lwsl_ss_info ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 647 of file lws-logs.h.

◆ lwsl_ss_debug

#define lwsl_ss_debug ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 653 of file lws-logs.h.

◆ lwsl_ss_parser

#define lwsl_ss_parser ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 659 of file lws-logs.h.

◆ lwsl_ss_header

#define lwsl_ss_header ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 665 of file lws-logs.h.

◆ lwsl_ss_ext

#define lwsl_ss_ext ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 671 of file lws-logs.h.

◆ lwsl_ss_client

#define lwsl_ss_client ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 677 of file lws-logs.h.

◆ lwsl_ss_latency

#define lwsl_ss_latency ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 683 of file lws-logs.h.

◆ lwsl_ss_thread

#define lwsl_ss_thread ( _w,
... )

#include <lws-logs.h>

Value:
do {} while(0)

Definition at line 689 of file lws-logs.h.

◆ lwsl_ss_user

#define lwsl_ss_user ( _w,
... )

#include <lws-logs.h>

Value:
lwsl_ss(_w, LLL_USER, __VA_ARGS__)

Definition at line 693 of file lws-logs.h.

◆ lwsl_hexdump_ss_err

#define lwsl_hexdump_ss_err ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_ss(_v, LLL_ERR, __VA_ARGS__)
#define lwsl_hexdump_ss(_h, _fil, _buf, _len)
Definition lws-logs.h:232

Definition at line 698 of file lws-logs.h.

◆ lwsl_hexdump_ss_warn

#define lwsl_hexdump_ss_warn ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_ss(_v, LLL_WARN, __VA_ARGS__)

Definition at line 699 of file lws-logs.h.

◆ lwsl_hexdump_ss_notice

#define lwsl_hexdump_ss_notice ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_ss(_v, LLL_NOTICE, __VA_ARGS__)

Definition at line 700 of file lws-logs.h.

◆ lwsl_hexdump_ss_info

#define lwsl_hexdump_ss_info ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_ss(_v, LLL_INFO, __VA_ARGS__)

Definition at line 701 of file lws-logs.h.

◆ lwsl_hexdump_ss_debug

#define lwsl_hexdump_ss_debug ( _v,
... )

#include <lws-logs.h>

Value:
lwsl_hexdump_ss(_v, LLL_DEBUG, __VA_ARGS__)

Definition at line 702 of file lws-logs.h.

Typedef Documentation

◆ lws_log_emit_t

typedef void(* lws_log_emit_t) (int level, const char *line)

#include <lws-logs.h>

Definition at line 74 of file lws-logs.h.

◆ lws_log_emit_cx_t

typedef void(* lws_log_emit_cx_t) (struct lws_log_cx *cx, int level, const char *line, size_t len)

#include <lws-logs.h>

Definition at line 75 of file lws-logs.h.

◆ lws_log_prepend_cx_t

typedef void(* lws_log_prepend_cx_t) (struct lws_log_cx *cx, void *obj, char **p, char *e)

#include <lws-logs.h>

Definition at line 77 of file lws-logs.h.

◆ lws_log_use_cx_t

typedef void(* lws_log_use_cx_t) (struct lws_log_cx *cx, int _new)

#include <lws-logs.h>

Definition at line 79 of file lws-logs.h.

◆ lws_log_cx_t

typedef struct lws_log_cx lws_log_cx_t

#include <lws-logs.h>

◆ lws_log_ratelimit_t

Function Documentation

◆ lwsl_timestamp()

LWS_VISIBLE LWS_EXTERN int lwsl_timestamp ( int level,
char * p,
size_t len )

#include <lws-logs.h>

lwsl_timestamp: generate logging timestamp string

Parameters
levellogging level
pchar * buffer to take timestamp
lenlength of p

returns length written in p

◆ lws_log_ratelimit_check()

LWS_VISIBLE LWS_EXTERN uint32_t lws_log_ratelimit_check ( lws_log_ratelimit_t * rl,
int64_t interval_us )

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ _lws_log_rl()

LWS_VISIBLE LWS_EXTERN void _lws_log_rl ( int filter,
uint32_t dropped,
const char * format,
... )

#include <lws-logs.h>

References LWS_EXTERN, LWS_FORMAT, and LWS_VISIBLE.

◆ _lws_log_cx_rl()

LWS_VISIBLE LWS_EXTERN void _lws_log_cx_rl ( lws_log_cx_t * cx,
lws_log_prepend_cx_t prep,
void * obj,
int filter,
uint32_t dropped,
const char * _fun,
const char * format,
... )

#include <lws-logs.h>

References _lws_log_cx_rl(), LWS_EXTERN, LWS_FORMAT, and LWS_VISIBLE.

Referenced by _lws_log_cx_rl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _lws_log()

LWS_VISIBLE LWS_EXTERN void _lws_log ( int filter,
const char * format,
... )

#include <lws-logs.h>

References LWS_EXTERN, LWS_FORMAT, and LWS_VISIBLE.

◆ _lws_logv()

LWS_VISIBLE LWS_EXTERN void _lws_logv ( int filter,
const char * format,
va_list vl )

#include <lws-logs.h>

References _lws_logv(), LWS_EXTERN, and LWS_VISIBLE.

Referenced by _lws_logv().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lwsl_context_get_cx()

LWS_VISIBLE LWS_EXTERN struct lws_log_cx * lwsl_context_get_cx ( struct lws_context * cx)

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ lwsl_vhost_get_cx()

LWS_VISIBLE LWS_EXTERN struct lws_log_cx * lwsl_vhost_get_cx ( struct lws_vhost * vh)

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ lwsl_wsi_get_cx()

LWS_VISIBLE LWS_EXTERN struct lws_log_cx * lwsl_wsi_get_cx ( struct lws * wsi)

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_log_emit_cx_file()

LWS_VISIBLE LWS_EXTERN void lws_log_emit_cx_file ( struct lws_log_cx * cx,
int level,
const char * line,
size_t len )

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_log_use_cx_file()

LWS_VISIBLE LWS_EXTERN void lws_log_use_cx_file ( struct lws_log_cx * cx,
int _new )

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_log_prepend_context()

LWS_VISIBLE LWS_EXTERN void lws_log_prepend_context ( struct lws_log_cx * cx,
void * obj,
char ** p,
char * e )

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_log_prepend_vhost()

LWS_VISIBLE LWS_EXTERN void lws_log_prepend_vhost ( struct lws_log_cx * cx,
void * obj,
char ** p,
char * e )

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_log_prepend_wsi()

LWS_VISIBLE LWS_EXTERN void lws_log_prepend_wsi ( struct lws_log_cx * cx,
void * obj,
char ** p,
char * e )

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ _lws_log_cx()

LWS_VISIBLE LWS_EXTERN void _lws_log_cx ( lws_log_cx_t * cx,
lws_log_prepend_cx_t prep,
void * obj,
int filter,
const char * _fun,
const char * format,
... )

#include <lws-logs.h>

References LWS_FORMAT.

◆ lwsl_hexdump_level()

LWS_VISIBLE LWS_EXTERN void lwsl_hexdump_level ( int level,
const void * vbuf,
size_t len )

#include <lws-logs.h>

lwsl_hexdump_level() - helper to hexdump a buffer at a selected debug level

Parameters
levelone of LLL_ constants
vbufbuffer start to dump
lenlength of buffer to dump

If level is visible, does a nice hexdump -C style dump of vbuf for len bytes. This can be extremely convenient while debugging.

References LWS_EXTERN, and LWS_VISIBLE.

◆ lwsl_hexdump_level_cx()

LWS_VISIBLE LWS_EXTERN void lwsl_hexdump_level_cx ( lws_log_cx_t * cx,
lws_log_prepend_cx_t prep,
void * obj,
int hexdump_level,
const void * vbuf,
size_t len )

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ lwsl_hexdump()

LWS_VISIBLE LWS_EXTERN void lwsl_hexdump ( const void * buf,
size_t len )

#include <lws-logs.h>

lwsl_hexdump() - helper to hexdump a buffer (DEBUG builds only)

Parameters
bufbuffer start to dump
lenlength of buffer to dump

Calls through to lwsl_hexdump_level(LLL_DEBUG, ... for compatability. It's better to use lwsl_hexdump_level(level, ... directly so you can control the visibility.

References LWS_INLINE.

◆ lws_set_log_level()

LWS_VISIBLE LWS_EXTERN void lws_set_log_level ( int level,
lws_log_emit_t log_emit_function )

#include <lws-logs.h>

lws_set_log_level() - Set the logging bitfield

Parameters
levelOR together the LLL_ debug contexts you want output from
log_emit_functionNULL to leave it as it is, or a user-supplied function to perform log string emission instead of the default stderr one.

log level defaults to "err", "warn" and "notice" contexts enabled and emission on stderr. If stderr is a tty (according to isatty()) then the output is coloured according to the log level using ANSI escapes.

You can set the default security level for logging using the secrecy_and_log_level() macro to set the level parameter, eg

lws_set_log_level(secrecy_and_log_level(LWS_SECRECY_PII, LLL_ERR | LLL_WARN), my_emit_function);

Normally you can just leave it at the default.

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_log_spew_tail_lines()

LWS_VISIBLE LWS_EXTERN void lws_log_spew_tail_lines ( unsigned int lines)

#include <lws-logs.h>

lws_log_spew_tail_lines() - set how much of a log spew is retained

Parameters
lineslines of the spew to retain and replay, or 0 for the built-in default (LWS_LOG_SPEW_TAIL_LINES, 10)

When logs arrive faster than anything can absorb them, lws stops emitting them and retains only the most recent tail of the spew on the heap, replaying it when the rate eases off (see READMEs/README.logging.md). By default that is a small tail, enough to see how a spew ended. When the part of interest is further back, eg, when debugging with a verbose log level where normal traffic trips the spew handling, this raises it.

The ring is sized for lines lines of typical length, so long lines may mean somewhat fewer are retained. lines is capped at 65536, which costs 16MiB of heap for the duration of a spew. The setting is processwide, and a spew already in progress keeps the tail it started with.

lws_cmdline_option_handle_builtin() calls this for –log-spew-tail <lines>.

References LWS_EXTERN, and LWS_VISIBLE.

◆ lwsl_emit_syslog()

LWS_VISIBLE LWS_EXTERN void lwsl_emit_syslog ( int level,
const char * line )

#include <lws-logs.h>

lwsl_emit_syslog() - helper log emit function writes to system log

Parameters
levelone of LLL_ log level indexes
linelog string

You use this by passing the function pointer to lws_set_log_level(), to set it as the log emit function, it is not called directly.

References LWS_EXTERN, and LWS_VISIBLE.

◆ lwsl_emit_stderr()

LWS_VISIBLE LWS_EXTERN void lwsl_emit_stderr ( int level,
const char * line )

#include <lws-logs.h>

lwsl_emit_stderr() - helper log emit function writes to stderr

Parameters
levelone of LLL_ log level indexes
linelog string

You use this by passing the function pointer to lws_set_log_level(), to set it as the log emit function, it is not called directly.

It prepends a system timestamp like [2018/11/13 07:41:57:3989]

If stderr is a tty, then ansi colour codes are added.

References LWS_EXTERN, and LWS_VISIBLE.

◆ lwsl_emit_stderr_notimestamp()

LWS_VISIBLE LWS_EXTERN void lwsl_emit_stderr_notimestamp ( int level,
const char * line )

#include <lws-logs.h>

lwsl_emit_stderr_notimestamp() - helper log emit function writes to stderr

Parameters
levelone of LLL_ log level indexes
linelog string

You use this by passing the function pointer to lws_set_log_level(), to set it as the log emit function, it is not called directly.

If stderr is a tty, then ansi colour codes are added.

References LWS_EXTERN, and LWS_VISIBLE.

◆ lwsl_visible()

LWS_VISIBLE LWS_EXTERN int lwsl_visible ( int level)

#include <lws-logs.h>

lwsl_visible() - returns true if the log level should be printed

Parameters
levelone of LLL_ log level indexes

This is useful if you have to do work to generate the log content, you can skip the work if the log level used to print it is not actually enabled at runtime.

References LWS_EXTERN, and LWS_VISIBLE.

◆ lws_wsi_tag()

LWS_VISIBLE LWS_EXTERN const char * lws_wsi_tag ( struct lws * wsi)

#include <lws-logs.h>

References LWS_EXTERN, and LWS_VISIBLE.

◆ lwsl_refcount_cx()

LWS_VISIBLE LWS_EXTERN void lwsl_refcount_cx ( lws_log_cx_t * cx,
int _new )

#include <lws-logs.h>