i3
log.c File Reference
#include <config.h>
#include "all.h"
#include "shmlog.h"
#include <libev/ev.h>
#include <libgen.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <errno.h>
#include <fcntl.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <unistd.h>
Include dependency graph for log.c:

Go to the source code of this file.

Data Structures

struct  log_client
 

Typedefs

typedef struct log_client log_client
 

Functions

void log_broadcast_to_clients (const char *message, size_t len)
 
static void store_log_markers (void)
 
void init_logging (void)
 Initializes logging by creating an error logfile in /tmp (or XDG_RUNTIME_DIR, see get_process_filename()).
 
void open_logbuffer (void)
 Opens the logbuffer.
 
void close_logbuffer (void)
 Closes the logbuffer.
 
void set_verbosity (bool _verbose)
 Set verbosity of i3.
 
bool get_debug_logging (void)
 Checks if debug logging is active.
 
void set_debug_logging (const bool _debug_logging)
 Set debug logging.
 
static void vlog (const bool print, const char *fmt, va_list args)
 
void verboselog (char *fmt,...)
 
void errorlog (char *fmt,...)
 
void debuglog (char *fmt,...)
 
void purge_zerobyte_logfile (void)
 Deletes the unused log files.
 
void log_new_client (EV_P_ struct ev_io *w, int revents)
 

Variables

static bool debug_logging = false
 
static bool verbose = false
 
static FILE * errorfile
 
char * errorfilename
 
char * shmlogname = ""
 
int shmlog_size = 0
 
static char * logbuffer
 
static char * logwalk
 
static i3_shmlog_headerheader
 
static char * loglastwrap
 
static int logbuffer_size
 
static int logbuffer_shm
 
static long long physical_mem_bytes
 
 log_clients = TAILQ_HEAD_INITIALIZER(log_clients)
 
char * current_log_stream_socket_path = NULL
 

Typedef Documentation

◆ log_client

typedef struct log_client log_client

Function Documentation

◆ close_logbuffer()

void close_logbuffer ( void )

Closes the logbuffer.

Definition at line 191 of file log.c.

References logbuffer, logbuffer_shm, and shmlogname.

Referenced by init_logging(), and open_logbuffer().

◆ debuglog()

void debuglog ( char * fmt,
... )

Definition at line 348 of file log.c.

References debug_logging, logbuffer, and vlog().

Here is the call graph for this function:

◆ errorlog()

void errorlog ( char * fmt,
... )

Definition at line 325 of file log.c.

References errorfile, and vlog().

Here is the call graph for this function:

◆ get_debug_logging()

bool get_debug_logging ( void )

Checks if debug logging is active.

Definition at line 213 of file log.c.

References debug_logging.

Referenced by cmd_debuglog(), and i3_restart().

◆ init_logging()

void init_logging ( void )

Initializes logging by creating an error logfile in /tmp (or XDG_RUNTIME_DIR, see get_process_filename()).

Definition at line 95 of file log.c.

References close_logbuffer(), errorfile, errorfilename, get_process_filename(), logbuffer, open_logbuffer(), physical_mem_bytes, purge_zerobyte_logfile(), and shmlog_size.

Referenced by cmd_shmlog(), and main().

Here is the call graph for this function:

◆ log_broadcast_to_clients()

void log_broadcast_to_clients ( const char * message,
size_t len )

Definition at line 422 of file log.c.

References log_client::clients, log_client::fd, log_clients, TAILQ_END, TAILQ_FIRST, TAILQ_NEXT, TAILQ_REMOVE, and writeall().

Referenced by vlog().

Here is the call graph for this function:

◆ log_new_client()

void log_new_client ( EV_P_ struct ev_io * w,
int revents )

Definition at line 399 of file log.c.

References log_client::fd.

Referenced by main().

◆ open_logbuffer()

void open_logbuffer ( void )

Opens the logbuffer.

Definition at line 136 of file log.c.

References close_logbuffer(), header, logbuffer, logbuffer_shm, logbuffer_size, loglastwrap, logwalk, physical_mem_bytes, sasprintf(), shmlog_size, shmlogname, and store_log_markers().

Referenced by init_logging().

Here is the call graph for this function:

◆ purge_zerobyte_logfile()

void purge_zerobyte_logfile ( void )

Deletes the unused log files.

Useful if i3 exits immediately, eg. because –get-socketpath was called. We don't care for syscall failures. This function is invoked automatically when exiting.

Definition at line 365 of file log.c.

References errorfilename.

Referenced by cmd_restart(), and init_logging().

◆ set_debug_logging()

void set_debug_logging ( const bool _debug_logging)

Set debug logging.

Definition at line 221 of file log.c.

References debug_logging.

Referenced by cmd_debuglog(), and main().

◆ set_verbosity()

void set_verbosity ( bool _verbose)

Set verbosity of i3.

If verbose is set to true, informative messages will be printed to stdout. If verbose is set to false, only errors will be printed.

Definition at line 205 of file log.c.

References verbose.

Referenced by main().

◆ store_log_markers()

static void store_log_markers ( void )
static

◆ verboselog()

void verboselog ( char * fmt,
... )

Definition at line 309 of file log.c.

References logbuffer, verbose, and vlog().

Here is the call graph for this function:

◆ vlog()

static void vlog ( const bool print,
const char * fmt,
va_list args )
static

Definition at line 232 of file log.c.

References header, log_broadcast_to_clients(), logbuffer, logbuffer_size, loglastwrap, logwalk, store_log_markers(), and i3_shmlog_header::wrap_count.

Referenced by debuglog(), errorlog(), and verboselog().

Here is the call graph for this function:

Variable Documentation

◆ current_log_stream_socket_path

char* current_log_stream_socket_path = NULL

Definition at line 390 of file log.c.

Referenced by cmd_restart(), i3_exit(), main(), and x_set_i3_atoms().

◆ debug_logging

bool debug_logging = false
static

Definition at line 35 of file log.c.

Referenced by debuglog(), get_debug_logging(), and set_debug_logging().

◆ errorfile

FILE* errorfile
static

Definition at line 37 of file log.c.

Referenced by errorlog(), and init_logging().

◆ errorfilename

char* errorfilename

Definition at line 38 of file log.c.

Referenced by init_logging(), purge_zerobyte_logfile(), run_binding(), and start_config_error_nagbar().

◆ header

i3_shmlog_header* header
static

Definition at line 53 of file log.c.

Referenced by ipc_send_client_message(), open_logbuffer(), store_log_markers(), and vlog().

◆ log_clients

log_clients = TAILQ_HEAD_INITIALIZER(log_clients)

Definition at line 72 of file log.c.

Referenced by log_broadcast_to_clients().

◆ logbuffer

char* logbuffer
static

◆ logbuffer_shm

int logbuffer_shm
static

Definition at line 60 of file log.c.

Referenced by close_logbuffer(), and open_logbuffer().

◆ logbuffer_size

int logbuffer_size
static

Definition at line 58 of file log.c.

Referenced by open_logbuffer(), store_log_markers(), and vlog().

◆ loglastwrap

char* loglastwrap
static

Definition at line 56 of file log.c.

Referenced by open_logbuffer(), store_log_markers(), and vlog().

◆ logwalk

char* logwalk
static

Definition at line 51 of file log.c.

Referenced by open_logbuffer(), store_log_markers(), and vlog().

◆ physical_mem_bytes

long long physical_mem_bytes
static

Definition at line 62 of file log.c.

Referenced by init_logging(), and open_logbuffer().

◆ shmlog_size

int shmlog_size = 0

Definition at line 47 of file log.c.

Referenced by cmd_shmlog(), init_logging(), main(), and open_logbuffer().

◆ shmlogname

char* shmlogname = ""

◆ verbose

bool verbose = false
static

Definition at line 36 of file log.c.

Referenced by CFGFUN(), set_verbosity(), and verboselog().