mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
Add separate setting for Frontend Logging Level
This commit is contained in:
parent
ad71451432
commit
73663104b3
@ -2640,6 +2640,7 @@ static bool config_load_file(const char *path, settings_t *settings)
|
||||
size_t path_size = PATH_MAX_LENGTH * sizeof(char);
|
||||
char *tmp_str = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
|
||||
bool ret = false;
|
||||
unsigned tmp_uint = 0;
|
||||
bool tmp_bool = false;
|
||||
unsigned msg_color = 0;
|
||||
char *save = NULL;
|
||||
@ -2741,19 +2742,9 @@ static bool config_load_file(const char *path, settings_t *settings)
|
||||
else
|
||||
verbosity_disable();
|
||||
}
|
||||
if (config_get_uint(conf, "frontend_log_level", &tmp_uint))
|
||||
{
|
||||
char tmp[64];
|
||||
|
||||
tmp[0] = '\0';
|
||||
|
||||
strlcpy(tmp, "perfcnt_enable", sizeof(tmp));
|
||||
if (config_get_bool(conf, tmp, &tmp_bool))
|
||||
{
|
||||
if (tmp_bool)
|
||||
rarch_ctl(RARCH_CTL_SET_PERFCNT_ENABLE, NULL);
|
||||
else
|
||||
rarch_ctl(RARCH_CTL_UNSET_PERFCNT_ENABLE, NULL);
|
||||
}
|
||||
verbosity_set_log_level(tmp_uint);
|
||||
}
|
||||
|
||||
/* Integer settings */
|
||||
|
@ -6063,6 +6063,14 @@ void general_write_handler(rarch_setting_t *setting)
|
||||
command_event(rarch_cmd, NULL);
|
||||
}
|
||||
|
||||
static void frontend_log_level_change_handler(rarch_setting_t *setting)
|
||||
{
|
||||
if (!setting)
|
||||
return;
|
||||
|
||||
verbosity_set_log_level(*setting->value.target.unsigned_integer);
|
||||
}
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
static void overlay_enable_toggle_change_handler(rarch_setting_t *setting)
|
||||
{
|
||||
@ -7593,6 +7601,7 @@ static bool setting_append_list(
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
(*list)[list_info->index - 1].change_handler = frontend_log_level_change_handler;
|
||||
(*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_RADIO_BUTTONS;
|
||||
(*list)[list_info->index - 1].action_ok = &setting_action_ok_uint;
|
||||
menu_settings_list_current_add_range(list, list_info, 0, 3, 1.0, true, true);
|
||||
|
10
retroarch.c
10
retroarch.c
@ -6276,7 +6276,7 @@ static bool environ_cb_get_system_info(unsigned cmd, void *data)
|
||||
const struct retro_subsystem_info *info =
|
||||
(const struct retro_subsystem_info*)data;
|
||||
settings_t *settings = configuration_settings;
|
||||
unsigned log_level = settings->uints.libretro_log_level;
|
||||
unsigned log_level = settings->uints.frontend_log_level;
|
||||
|
||||
subsystem_current_count = 0;
|
||||
|
||||
@ -6690,7 +6690,7 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
|
||||
case RETRO_ENVIRONMENT_GET_VARIABLE:
|
||||
{
|
||||
unsigned log_level = settings->uints.libretro_log_level;
|
||||
unsigned log_level = settings->uints.frontend_log_level;
|
||||
struct retro_variable *var = (struct retro_variable*)data;
|
||||
|
||||
if (!var)
|
||||
@ -6992,7 +6992,7 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
RARCH_LOG("Environ SET_INPUT_DESCRIPTORS:\n");
|
||||
|
||||
{
|
||||
unsigned log_level = settings->uints.libretro_log_level;
|
||||
unsigned log_level = settings->uints.frontend_log_level;
|
||||
|
||||
if (log_level == RETRO_LOG_DEBUG)
|
||||
{
|
||||
@ -7293,7 +7293,7 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
unsigned i;
|
||||
const struct retro_subsystem_info *info =
|
||||
(const struct retro_subsystem_info*)data;
|
||||
unsigned log_level = settings->uints.libretro_log_level;
|
||||
unsigned log_level = settings->uints.frontend_log_level;
|
||||
|
||||
if (log_level == RETRO_LOG_DEBUG)
|
||||
RARCH_LOG("Environ SET_SUBSYSTEM_INFO.\n");
|
||||
@ -7343,7 +7343,7 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
unsigned i, j;
|
||||
const struct retro_controller_info *info =
|
||||
(const struct retro_controller_info*)data;
|
||||
unsigned log_level = settings->uints.libretro_log_level;
|
||||
unsigned log_level = settings->uints.frontend_log_level;
|
||||
|
||||
RARCH_LOG("Environ SET_CONTROLLER_INFO.\n");
|
||||
|
||||
|
191
verbosity.c
191
verbosity.c
@ -62,12 +62,19 @@
|
||||
#include "ui/ui_companion_driver.h"
|
||||
#endif
|
||||
|
||||
#ifdef RARCH_INTERNAL
|
||||
#include "config.def.h"
|
||||
#else
|
||||
#define DEFAULT_FRONTEND_LOG_LEVEL 1
|
||||
#endif
|
||||
|
||||
/* If this is non-NULL. RARCH_LOG and friends
|
||||
* will write to this file. */
|
||||
static FILE *log_file_fp = NULL;
|
||||
static void* log_file_buf = NULL;
|
||||
static bool main_verbosity = false;
|
||||
static bool log_file_initialized = false;
|
||||
static FILE *log_file_fp = NULL;
|
||||
static void* log_file_buf = NULL;
|
||||
static unsigned verbosity_log_level = DEFAULT_FRONTEND_LOG_LEVEL;
|
||||
static bool main_verbosity = false;
|
||||
static bool log_file_initialized = false;
|
||||
|
||||
#ifdef HAVE_LIBNX
|
||||
static Mutex logging_mtx;
|
||||
@ -76,6 +83,11 @@ bool nxlink_connected = false;
|
||||
#endif /* NXLINK */
|
||||
#endif /* HAVE_LIBNX */
|
||||
|
||||
void verbosity_set_log_level(unsigned level)
|
||||
{
|
||||
verbosity_log_level = level;
|
||||
}
|
||||
|
||||
void verbosity_enable(void)
|
||||
{
|
||||
main_verbosity = true;
|
||||
@ -162,112 +174,115 @@ void retro_main_log_file_deinit(void)
|
||||
#if !defined(HAVE_LOGGER)
|
||||
void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
|
||||
{
|
||||
if (verbosity_log_level <= 1)
|
||||
{
|
||||
#if TARGET_OS_IPHONE
|
||||
#if TARGET_IPHONE_SIMULATOR
|
||||
vprintf(fmt, ap);
|
||||
vprintf(fmt, ap);
|
||||
#else
|
||||
static aslclient asl_client;
|
||||
static int asl_initialized = 0;
|
||||
if (!asl_initialized)
|
||||
{
|
||||
asl_client = asl_open(
|
||||
file_path_str(FILE_PATH_PROGRAM_NAME),
|
||||
"com.apple.console",
|
||||
ASL_OPT_STDERR | ASL_OPT_NO_DELAY);
|
||||
asl_initialized = 1;
|
||||
}
|
||||
aslmsg msg = asl_new(ASL_TYPE_MSG);
|
||||
asl_set(msg, ASL_KEY_READ_UID, "-1");
|
||||
if (tag)
|
||||
asl_log(asl_client, msg, ASL_LEVEL_NOTICE, "%s", tag);
|
||||
asl_vlog(asl_client, msg, ASL_LEVEL_NOTICE, fmt, ap);
|
||||
asl_free(msg);
|
||||
static aslclient asl_client;
|
||||
static int asl_initialized = 0;
|
||||
if (!asl_initialized)
|
||||
{
|
||||
asl_client = asl_open(
|
||||
file_path_str(FILE_PATH_PROGRAM_NAME),
|
||||
"com.apple.console",
|
||||
ASL_OPT_STDERR | ASL_OPT_NO_DELAY);
|
||||
asl_initialized = 1;
|
||||
}
|
||||
aslmsg msg = asl_new(ASL_TYPE_MSG);
|
||||
asl_set(msg, ASL_KEY_READ_UID, "-1");
|
||||
if (tag)
|
||||
asl_log(asl_client, msg, ASL_LEVEL_NOTICE, "%s", tag);
|
||||
asl_vlog(asl_client, msg, ASL_LEVEL_NOTICE, fmt, ap);
|
||||
asl_free(msg);
|
||||
#endif
|
||||
#elif defined(_XBOX1)
|
||||
/* FIXME: Using arbitrary string as fmt argument is unsafe. */
|
||||
char msg_new[256];
|
||||
char buffer[256];
|
||||
/* FIXME: Using arbitrary string as fmt argument is unsafe. */
|
||||
char msg_new[256];
|
||||
char buffer[256];
|
||||
|
||||
msg_new[0] = buffer[0] = '\0';
|
||||
snprintf(msg_new, sizeof(msg_new), "%s: %s %s",
|
||||
file_path_str(FILE_PATH_PROGRAM_NAME),
|
||||
tag ? tag : "",
|
||||
fmt);
|
||||
wvsprintf(buffer, msg_new, ap);
|
||||
OutputDebugStringA(buffer);
|
||||
#elif defined(ANDROID)
|
||||
int prio = ANDROID_LOG_INFO;
|
||||
if (tag)
|
||||
{
|
||||
if (string_is_equal(file_path_str(FILE_PATH_LOG_WARN), tag))
|
||||
prio = ANDROID_LOG_WARN;
|
||||
else if (string_is_equal(file_path_str(FILE_PATH_LOG_ERROR), tag))
|
||||
prio = ANDROID_LOG_ERROR;
|
||||
}
|
||||
|
||||
if (log_file_initialized)
|
||||
{
|
||||
vfprintf(log_file_fp, fmt, ap);
|
||||
fflush(log_file_fp);
|
||||
}
|
||||
else
|
||||
__android_log_vprint(prio,
|
||||
msg_new[0] = buffer[0] = '\0';
|
||||
snprintf(msg_new, sizeof(msg_new), "%s: %s %s",
|
||||
file_path_str(FILE_PATH_PROGRAM_NAME),
|
||||
fmt,
|
||||
ap);
|
||||
#else
|
||||
FILE *fp = (FILE*)log_file_fp;
|
||||
#if defined(HAVE_QT) || defined(__WINRT__)
|
||||
int ret;
|
||||
char buffer[256];
|
||||
buffer[0] = '\0';
|
||||
ret = vsnprintf(buffer, sizeof(buffer), fmt, ap);
|
||||
|
||||
/* ensure null termination and line break in error case */
|
||||
if (ret < 0)
|
||||
{
|
||||
int end;
|
||||
buffer[sizeof(buffer) - 1] = '\0';
|
||||
end = strlen(buffer) - 1;
|
||||
if (end >= 0)
|
||||
buffer[end] = '\n';
|
||||
else
|
||||
tag ? tag : "",
|
||||
fmt);
|
||||
wvsprintf(buffer, msg_new, ap);
|
||||
OutputDebugStringA(buffer);
|
||||
#elif defined(ANDROID)
|
||||
int prio = ANDROID_LOG_INFO;
|
||||
if (tag)
|
||||
{
|
||||
buffer[0] = '\n';
|
||||
buffer[1] = '\0';
|
||||
if (string_is_equal(file_path_str(FILE_PATH_LOG_WARN), tag))
|
||||
prio = ANDROID_LOG_WARN;
|
||||
else if (string_is_equal(file_path_str(FILE_PATH_LOG_ERROR), tag))
|
||||
prio = ANDROID_LOG_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
if (fp)
|
||||
{
|
||||
fprintf(fp, "%s %s", tag ? tag : file_path_str(FILE_PATH_LOG_INFO), buffer);
|
||||
fflush(fp);
|
||||
}
|
||||
if (log_file_initialized)
|
||||
{
|
||||
vfprintf(log_file_fp, fmt, ap);
|
||||
fflush(log_file_fp);
|
||||
}
|
||||
else
|
||||
__android_log_vprint(prio,
|
||||
file_path_str(FILE_PATH_PROGRAM_NAME),
|
||||
fmt,
|
||||
ap);
|
||||
#else
|
||||
FILE *fp = (FILE*)log_file_fp;
|
||||
#if defined(HAVE_QT) || defined(__WINRT__)
|
||||
int ret;
|
||||
char buffer[256];
|
||||
buffer[0] = '\0';
|
||||
ret = vsnprintf(buffer, sizeof(buffer), fmt, ap);
|
||||
|
||||
/* ensure null termination and line break in error case */
|
||||
if (ret < 0)
|
||||
{
|
||||
int end;
|
||||
buffer[sizeof(buffer) - 1] = '\0';
|
||||
end = strlen(buffer) - 1;
|
||||
if (end >= 0)
|
||||
buffer[end] = '\n';
|
||||
else
|
||||
{
|
||||
buffer[0] = '\n';
|
||||
buffer[1] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
if (fp)
|
||||
{
|
||||
fprintf(fp, "%s %s", tag ? tag : file_path_str(FILE_PATH_LOG_INFO), buffer);
|
||||
fflush(fp);
|
||||
}
|
||||
|
||||
#if defined(HAVE_QT)
|
||||
ui_companion_driver_log_msg(buffer);
|
||||
ui_companion_driver_log_msg(buffer);
|
||||
#endif
|
||||
|
||||
#if defined(__WINRT__)
|
||||
OutputDebugStringA(buffer);
|
||||
OutputDebugStringA(buffer);
|
||||
#endif
|
||||
#else
|
||||
#if defined(HAVE_LIBNX)
|
||||
mutexLock(&logging_mtx);
|
||||
mutexLock(&logging_mtx);
|
||||
#endif
|
||||
if (fp)
|
||||
{
|
||||
fprintf(fp, "%s ",
|
||||
tag ? tag : file_path_str(FILE_PATH_LOG_INFO));
|
||||
vfprintf(fp, fmt, ap);
|
||||
fflush(fp);
|
||||
}
|
||||
if (fp)
|
||||
{
|
||||
fprintf(fp, "%s ",
|
||||
tag ? tag : file_path_str(FILE_PATH_LOG_INFO));
|
||||
vfprintf(fp, fmt, ap);
|
||||
fflush(fp);
|
||||
}
|
||||
#if defined(HAVE_LIBNX)
|
||||
mutexUnlock(&logging_mtx);
|
||||
mutexUnlock(&logging_mtx);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
void RARCH_LOG_BUFFER(uint8_t *data, size_t size)
|
||||
@ -309,6 +324,8 @@ void RARCH_LOG(const char *fmt, ...)
|
||||
|
||||
if (!main_verbosity)
|
||||
return;
|
||||
if (verbosity_log_level > 1)
|
||||
return;
|
||||
|
||||
va_start(ap, fmt);
|
||||
RARCH_LOG_V(file_path_str(FILE_PATH_LOG_INFO), fmt, ap);
|
||||
@ -329,6 +346,8 @@ void RARCH_WARN(const char *fmt, ...)
|
||||
|
||||
if (!main_verbosity)
|
||||
return;
|
||||
if (verbosity_log_level > 2)
|
||||
return;
|
||||
|
||||
va_start(ap, fmt);
|
||||
RARCH_WARN_V(file_path_str(FILE_PATH_LOG_WARN), fmt, ap);
|
||||
|
@ -33,6 +33,8 @@ void verbosity_enable(void);
|
||||
|
||||
void verbosity_disable(void);
|
||||
|
||||
void verbosity_set_log_level(unsigned level);
|
||||
|
||||
bool *verbosity_get_ptr(void);
|
||||
|
||||
void *retro_main_log_file(void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user