90 lines
1.9 KiB
C
90 lines
1.9 KiB
C
/**
|
|
* Copyright (c) 2020 rxi
|
|
*
|
|
* Original library is free software; you can redistribute it and/or modify it
|
|
* under the terms of the MIT license. See `log.c` for details.
|
|
*
|
|
* Modified work Copyright (c) 2026 Emilia Marigold.
|
|
* New changes licensed under the AGPLv3 license.
|
|
*/
|
|
|
|
#ifndef LOG_H
|
|
#define LOG_H
|
|
|
|
#include <stdio.h>
|
|
#include <stdarg.h>
|
|
#include <stdbool.h>
|
|
#include <time.h>
|
|
|
|
#define LOG_VERSION "r:2.26.180.1"
|
|
|
|
typedef
|
|
struct log_event_struct
|
|
{
|
|
va_list argument_pointer;
|
|
const char *format;
|
|
const char *file;
|
|
struct tm *local_time;
|
|
void *user_data;
|
|
int line;
|
|
int severity_level;
|
|
}
|
|
log_event_type;
|
|
|
|
typedef
|
|
void
|
|
(*log_function)(log_event_type *event);
|
|
|
|
typedef
|
|
void
|
|
(*lock_function)(bool lock,
|
|
void *user_data);
|
|
|
|
enum
|
|
{
|
|
LOG_TRACE_ENUM = 0,
|
|
LOG_DEBUG_ENUM,
|
|
LOG_INFO_ENUM,
|
|
LOG_WARNING_ENUM,
|
|
LOG_ERROR_ENUM,
|
|
LOG_FATAL_ENUM
|
|
};
|
|
|
|
#define log_trace(...) log_log(LOG_TRACE_ENUM, __FILE__, __LINE__, __VA_ARGS__)
|
|
#define log_debug(...) log_log(LOG_DEBUG_ENUM, __FILE__, __LINE__, __VA_ARGS__)
|
|
#define log_info(...) log_log(LOG_INFO_ENUM, __FILE__, __LINE__, __VA_ARGS__)
|
|
#define log_warning(...) log_log(LOG_WARNING_ENUM, __FILE__, __LINE__, __VA_ARGS__)
|
|
#define log_error(...) log_log(LOG_ERROR_ENUM, __FILE__, __LINE__, __VA_ARGS__)
|
|
#define log_fatal(...) log_log(LOG_FATAL_ENUM, __FILE__, __LINE__, __VA_ARGS__)
|
|
|
|
const char*
|
|
log_level_string(int severity_level);
|
|
|
|
void
|
|
log_set_lock(lock_function function,
|
|
void *user_data);
|
|
|
|
void
|
|
log_set_level(int severity_level);
|
|
|
|
void
|
|
log_set_quiet(bool should_be_quiet);
|
|
|
|
int
|
|
log_add_callback(log_function function,
|
|
void *user_data,
|
|
int severity_level);
|
|
|
|
int
|
|
log_add_file_pointer(FILE *file_pointer,
|
|
int severity_level);
|
|
|
|
void
|
|
log_log(int severity_level,
|
|
const char *file,
|
|
int line,
|
|
const char *format,
|
|
...);
|
|
|
|
#endif
|