X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Flog.h;h=e7fc8acba1341c182078a83a9657f789d0354ef8;hb=72751745101de15c3a6d1b28c50069ec720ba9a1;hp=0eb5574444c06fc8b30356721fd9a44ad3fbeb96;hpb=e09e077b763bb1ff1975998c87d017afa9c319c3;p=i3%2Fi3 diff --git a/include/log.h b/include/log.h index 0eb55744..e7fc8acb 100644 --- a/include/log.h +++ b/include/log.h @@ -2,24 +2,33 @@ * vim:ts=4:sw=4:expandtab * * i3 - an improved dynamic tiling window manager - * © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE) + * © 2009 Michael Stapelberg and contributors (see also: LICENSE) * - * log.c: Setting of loglevels, logging functions. + * log.c: Logging functions. * */ -#ifndef _LOG_H -#define _LOG_H +#pragma once #include #include +/* We will include libi3.h which define its own version of LOG, ELOG. + * We want *our* version, so we undef the libi3 one. */ +#if defined(LOG) +#undef LOG +#endif +#if defined(ELOG) +#undef ELOG +#endif +#if defined(DLOG) +#undef DLOG +#endif /** ##__VA_ARGS__ means: leave out __VA_ARGS__ completely if it is empty, that is, delete the preceding comma */ #define LOG(fmt, ...) verboselog(fmt, ##__VA_ARGS__) #define ELOG(fmt, ...) errorlog("ERROR: " fmt, ##__VA_ARGS__) -#define DLOG(fmt, ...) debuglog(LOGLEVEL, "%s:%s:%d - " fmt, __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__) +#define DLOG(fmt, ...) debuglog("%s:%s:%d - " fmt, I3__FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__) -extern char *loglevels[]; extern char *errorfilename; extern char *shmlogname; extern int shmlog_size; @@ -29,13 +38,31 @@ extern int shmlog_size; * XDG_RUNTIME_DIR, see get_process_filename()). * */ -void init_logging(); +void init_logging(void); + +/** + * Opens the logbuffer. + * + */ +void open_logbuffer(void); /** - * Enables the given loglevel. + * Closes the logbuffer. * */ -void add_loglevel(const char *level); +void close_logbuffer(void); + +/** + * Checks if debug logging is active. + * + */ +bool get_debug_logging(void); + +/** + * Set debug logging. + * + */ +void set_debug_logging(const bool _debug_logging); /** * Set verbosity of i3. If verbose is set to true, informative messages will @@ -47,29 +74,30 @@ void set_verbosity(bool _verbose); /** * Logs the given message to stdout while prefixing the current time to it, - * but only if the corresponding debug loglevel was activated. + * but only if debug logging was activated. * */ -void debuglog(uint64_t lev, char *fmt, ...); +void debuglog(char *fmt, ...) + __attribute__((format(printf, 1, 2))); /** * Logs the given message to stdout while prefixing the current time to it. * */ -void errorlog(char *fmt, ...); +void errorlog(char *fmt, ...) + __attribute__((format(printf, 1, 2))); /** * Logs the given message to stdout while prefixing the current time to it, * but only if verbose mode is activated. * */ -void verboselog(char *fmt, ...); +void verboselog(char *fmt, ...) + __attribute__((format(printf, 1, 2))); /** - * Logs the given message to stdout while prefixing the current time to it. - * This is to be called by LOG() which includes filename/linenumber - * + * 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. */ -void slog(char *fmt, va_list args); - -#endif +void purge_zerobyte_logfile(void);