mirror of
https://github.com/libretro/RetroArch
synced 2025-02-06 00:39:53 +00:00
Log to file improvements
This commit is contained in:
parent
538576e6f9
commit
93506a0d18
@ -439,11 +439,7 @@ static bool menu_swap_ok_cancel_buttons = false;
|
||||
|
||||
static bool quit_press_twice = false;
|
||||
|
||||
#if defined(ANDROID)
|
||||
static bool default_log_to_file = true;
|
||||
#else
|
||||
static bool default_log_to_file = false;
|
||||
#endif
|
||||
|
||||
/* Crop overscanned frames. */
|
||||
static const bool crop_overscan = true;
|
||||
@ -922,6 +918,4 @@ static char buildbot_assets_server_url[] = "http://buildbot.libretro.com/assets/
|
||||
|
||||
static char default_discord_app_id[] = "475456035851599874";
|
||||
|
||||
static char default_log_file[] = "retroarch.log";
|
||||
|
||||
#endif
|
||||
|
@ -1310,8 +1310,7 @@ static struct config_path_setting *populate_settings_path(settings_t *settings,
|
||||
global->record.config_dir, false, NULL, true);
|
||||
}
|
||||
|
||||
SETTING_ARRAY("log_file", settings->paths.log_file, true, default_log_file, true);
|
||||
SETTING_ARRAY("log_dir", settings->paths.log_dir, true, "", true);
|
||||
SETTING_ARRAY("log_dir", settings->paths.log_dir, true, NULL, true);
|
||||
|
||||
*size = count;
|
||||
|
||||
@ -1594,6 +1593,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
|
||||
#ifdef HAVE_OZONE
|
||||
SETTING_BOOL("ozone_collapse_sidebar", &settings->bools.ozone_collapse_sidebar, true, ozone_collapse_sidebar, false);
|
||||
#endif
|
||||
|
||||
SETTING_BOOL("log_to_file", &settings->bools.log_to_file, true, default_log_to_file, false);
|
||||
|
||||
*size = count;
|
||||
@ -1961,12 +1961,6 @@ void config_set_defaults(void)
|
||||
strlcpy(settings->arrays.discord_app_id,
|
||||
default_discord_app_id, sizeof(settings->arrays.discord_app_id));
|
||||
|
||||
strlcpy(settings->paths.log_file,
|
||||
default_log_file, sizeof(settings->paths.log_file));
|
||||
|
||||
strlcpy(settings->paths.log_dir,
|
||||
g_defaults.dirs[DEFAULT_DIR_LOGS], sizeof(settings->paths.log_dir));
|
||||
|
||||
#ifdef HAVE_MATERIALUI
|
||||
if (g_defaults.menu.materialui.menu_color_theme_enable)
|
||||
settings->uints.menu_materialui_color_theme = g_defaults.menu.materialui.menu_color_theme;
|
||||
@ -2128,6 +2122,8 @@ void config_set_defaults(void)
|
||||
*settings->paths.directory_content_history = '\0';
|
||||
*settings->paths.path_audio_dsp_plugin = '\0';
|
||||
|
||||
*settings->paths.log_dir = '\0';
|
||||
|
||||
video_driver_default_settings();
|
||||
|
||||
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_WALLPAPERS]))
|
||||
@ -3160,6 +3156,20 @@ static bool config_load_file(const char *path, bool set_defaults,
|
||||
if (string_is_equal(settings->paths.directory_system, "default"))
|
||||
*settings->paths.directory_system = '\0';
|
||||
|
||||
/* Log directory is a special case, since it must contain
|
||||
* a valid path as soon as possible - if config file
|
||||
* value is 'default' must copy g_defaults.dirs[DEFAULT_DIR_LOGS]
|
||||
* directly... */
|
||||
if (string_is_equal(settings->paths.log_dir, "default"))
|
||||
{
|
||||
if (!string_is_empty(g_defaults.dirs[DEFAULT_DIR_LOGS]))
|
||||
strlcpy(settings->paths.log_dir,
|
||||
g_defaults.dirs[DEFAULT_DIR_LOGS],
|
||||
sizeof(settings->paths.log_dir));
|
||||
else
|
||||
*settings->paths.log_dir = '\0';
|
||||
}
|
||||
|
||||
if (settings->floats.slowmotion_ratio < 1.0f)
|
||||
configuration_set_float(settings, settings->floats.slowmotion_ratio, 1.0f);
|
||||
|
||||
|
@ -594,7 +594,6 @@ typedef struct settings
|
||||
char streaming_title[PATH_MAX_LENGTH];
|
||||
|
||||
char log_dir[PATH_MAX_LENGTH];
|
||||
char log_file[PATH_MAX_LENGTH];
|
||||
} paths;
|
||||
|
||||
bool modified;
|
||||
|
@ -94,7 +94,9 @@ enum file_path_enum
|
||||
FILE_PATH_XM_EXTENSION,
|
||||
FILE_PATH_CONFIG_EXTENSION,
|
||||
FILE_PATH_CORE_INFO_EXTENSION,
|
||||
FILE_PATH_RUNTIME_EXTENSION
|
||||
FILE_PATH_RUNTIME_EXTENSION,
|
||||
FILE_PATH_DEFAULT_EVENT_LOG,
|
||||
FILE_PATH_EVENT_LOG_EXTENSION
|
||||
};
|
||||
|
||||
enum application_special_type
|
||||
|
@ -227,6 +227,12 @@ const char *file_path_str(enum file_path_enum enum_idx)
|
||||
case FILE_PATH_RUNTIME_EXTENSION:
|
||||
str = ".lrtl";
|
||||
break;
|
||||
case FILE_PATH_DEFAULT_EVENT_LOG:
|
||||
str = "retroarch.log";
|
||||
break;
|
||||
case FILE_PATH_EVENT_LOG_EXTENSION:
|
||||
str = ".log";
|
||||
break;
|
||||
case FILE_PATH_UNKNOWN:
|
||||
default:
|
||||
break;
|
||||
|
@ -1920,6 +1920,8 @@ static void frontend_unix_get_env(int *argc,
|
||||
"screenshots", sizeof(g_defaults.dirs[DEFAULT_DIR_SCREENSHOT]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS], base_path,
|
||||
"thumbnails", sizeof(g_defaults.dirs[DEFAULT_DIR_THUMBNAILS]));
|
||||
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_LOGS], base_path,
|
||||
"logs", sizeof(g_defaults.dirs[DEFAULT_DIR_LOGS]));
|
||||
#endif
|
||||
|
||||
for (i = 0; i < DEFAULT_DIR_LAST; i++)
|
||||
|
@ -647,6 +647,8 @@ MSG_HASH(MENU_ENUM_LABEL_LOGGING_SETTINGS,
|
||||
"logging_settings")
|
||||
MSG_HASH(MENU_ENUM_LABEL_LOG_VERBOSITY,
|
||||
"log_verbosity")
|
||||
MSG_HASH(MENU_ENUM_LABEL_LOG_TO_FILE,
|
||||
"log_to_file")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MAIN_MENU,
|
||||
"main_menu")
|
||||
MSG_HASH(MENU_ENUM_LABEL_MANAGEMENT,
|
||||
@ -1811,3 +1813,5 @@ MSG_HASH(MENU_ENUM_LABEL_VIBRATE_ON_KEYPRESS,
|
||||
"vibrate_on_keypress")
|
||||
MSG_HASH(MENU_ENUM_LABEL_ENABLE_DEVICE_VIBRATION,
|
||||
"enable_device_vibration")
|
||||
MSG_HASH(MENU_ENUM_LABEL_LOG_DIR,
|
||||
"log_dir")
|
||||
|
@ -1616,6 +1616,14 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_LOG_VERBOSITY,
|
||||
"Logging Verbosity"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_LOG_TO_FILE,
|
||||
"Log To File"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_LOG_TO_FILE,
|
||||
"Redirects system event log messages to file. Requires 'Logging Verbosity' to be enabled."
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_MAIN_MENU,
|
||||
"Main Menu"
|
||||
@ -8494,3 +8502,11 @@ MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_ENABLE_DEVICE_VIBRATION,
|
||||
"Enable device vibration (for supported cores)"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_LABEL_VALUE_LOG_DIR,
|
||||
"System Event Logs"
|
||||
)
|
||||
MSG_HASH(
|
||||
MENU_ENUM_SUBLABEL_LOG_DIR,
|
||||
"Save system event log files to this directory."
|
||||
)
|
||||
|
@ -143,6 +143,8 @@ default_sublabel_macro(action_bind_sublabel_systeminfo_cpu_cores, MENU_
|
||||
default_sublabel_macro(action_bind_sublabel_toggle_gamepad_combo, MENU_ENUM_SUBLABEL_INPUT_MENU_ENUM_TOGGLE_GAMEPAD_COMBO)
|
||||
default_sublabel_macro(action_bind_sublabel_show_hidden_files, MENU_ENUM_SUBLABEL_SHOW_HIDDEN_FILES)
|
||||
default_sublabel_macro(action_bind_sublabel_log_verbosity, MENU_ENUM_SUBLABEL_LOG_VERBOSITY)
|
||||
default_sublabel_macro(action_bind_sublabel_log_to_file, MENU_ENUM_SUBLABEL_LOG_TO_FILE)
|
||||
default_sublabel_macro(action_bind_sublabel_log_dir, MENU_ENUM_SUBLABEL_LOG_DIR)
|
||||
default_sublabel_macro(action_bind_sublabel_video_monitor_index, MENU_ENUM_SUBLABEL_VIDEO_MONITOR_INDEX)
|
||||
default_sublabel_macro(action_bind_sublabel_video_refresh_rate_auto, MENU_ENUM_SUBLABEL_VIDEO_REFRESH_RATE_AUTO)
|
||||
default_sublabel_macro(action_bind_sublabel_video_hard_sync, MENU_ENUM_SUBLABEL_VIDEO_HARD_SYNC)
|
||||
@ -2129,6 +2131,12 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_LOG_VERBOSITY:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_log_verbosity);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_LOG_TO_FILE:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_log_to_file);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_LOG_DIR:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_log_dir);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_SHOW_HIDDEN_FILES:
|
||||
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_show_hidden_files);
|
||||
break;
|
||||
|
@ -213,6 +213,7 @@ default_fill_title_macro(action_get_title_assets_directory, MENU_ENUM_LABE
|
||||
default_fill_title_macro(action_get_title_extraction_directory, MENU_ENUM_LABEL_VALUE_CACHE_DIRECTORY)
|
||||
default_fill_title_macro(action_get_title_menu, MENU_ENUM_LABEL_VALUE_MENU_SETTINGS)
|
||||
default_fill_title_macro(action_get_title_font_path, MENU_ENUM_LABEL_VALUE_XMB_FONT)
|
||||
default_fill_title_macro(action_get_title_log_dir, MENU_ENUM_LABEL_VALUE_LOG_DIR)
|
||||
|
||||
default_title_copy_macro(action_get_title_help, MENU_ENUM_LABEL_VALUE_HELP_LIST)
|
||||
default_title_copy_macro(action_get_title_input_settings, MENU_ENUM_LABEL_VALUE_INPUT_SETTINGS)
|
||||
@ -715,6 +716,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_ENUM_LABEL_RGUI_CONFIG_DIRECTORY:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_config_directory);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_LOG_DIR:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_log_dir);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_INFORMATION_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_information_list);
|
||||
break;
|
||||
@ -1047,6 +1051,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
|
||||
case MENU_LABEL_RGUI_CONFIG_DIRECTORY:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_config_directory);
|
||||
break;
|
||||
case MENU_LABEL_LOG_DIR:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_log_dir);
|
||||
break;
|
||||
case MENU_LABEL_INFORMATION_LIST:
|
||||
BIND_ACTION_GET_TITLE(cbs, action_get_title_information_list);
|
||||
break;
|
||||
|
@ -5498,6 +5498,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_LIBRETRO_LOG_LEVEL,
|
||||
PARSE_ONLY_UINT, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_LOG_TO_FILE,
|
||||
PARSE_ONLY_BOOL, false);
|
||||
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
@ -6735,6 +6738,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_CACHE_DIRECTORY,
|
||||
PARSE_ONLY_DIR, false);
|
||||
menu_displaylist_parse_settings_enum(menu, info,
|
||||
MENU_ENUM_LABEL_LOG_DIR,
|
||||
PARSE_ONLY_DIR, false);
|
||||
|
||||
info->need_refresh = true;
|
||||
info->need_push = true;
|
||||
|
@ -3321,11 +3321,33 @@ void general_write_handler(rarch_setting_t *setting)
|
||||
break;
|
||||
case MENU_ENUM_LABEL_LOG_VERBOSITY:
|
||||
if (!verbosity_is_enabled())
|
||||
{
|
||||
rarch_log_file_init();
|
||||
verbosity_enable();
|
||||
}
|
||||
else
|
||||
{
|
||||
verbosity_disable();
|
||||
rarch_log_file_deinit();
|
||||
}
|
||||
retroarch_override_setting_unset(RARCH_OVERRIDE_SETTING_VERBOSITY, NULL);
|
||||
break;
|
||||
case MENU_ENUM_LABEL_LOG_TO_FILE:
|
||||
if (verbosity_is_enabled())
|
||||
{
|
||||
if (settings->bools.log_to_file && !is_logging_to_file())
|
||||
rarch_log_file_init();
|
||||
else if (!settings->bools.log_to_file && is_logging_to_file())
|
||||
rarch_log_file_deinit();
|
||||
}
|
||||
break;
|
||||
case MENU_ENUM_LABEL_LOG_DIR:
|
||||
if (verbosity_is_enabled() && is_logging_to_file())
|
||||
{
|
||||
rarch_log_file_deinit();
|
||||
rarch_log_file_init();
|
||||
}
|
||||
break;
|
||||
case MENU_ENUM_LABEL_VIDEO_SMOOTH:
|
||||
video_driver_set_filtering(1, settings->bools.video_smooth);
|
||||
break;
|
||||
@ -4938,6 +4960,21 @@ static bool setting_append_list(
|
||||
&setting_get_string_representation_uint_libretro_log_level;
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
&settings->bools.log_to_file,
|
||||
MENU_ENUM_LABEL_LOG_TO_FILE,
|
||||
MENU_ENUM_LABEL_VALUE_LOG_TO_FILE,
|
||||
default_log_to_file,
|
||||
MENU_ENUM_LABEL_VALUE_OFF,
|
||||
MENU_ENUM_LABEL_VALUE_ON,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler,
|
||||
SD_FLAG_ADVANCED);
|
||||
|
||||
END_SUB_GROUP(list, list_info, parent_group);
|
||||
|
||||
START_SUB_GROUP(list, list_info, "Performance Counters", &group_info, &subgroup_info,
|
||||
@ -11414,6 +11451,21 @@ static bool setting_append_list(
|
||||
general_read_handler);
|
||||
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
|
||||
|
||||
CONFIG_DIR(
|
||||
list, list_info,
|
||||
settings->paths.log_dir,
|
||||
sizeof(settings->paths.log_dir),
|
||||
MENU_ENUM_LABEL_LOG_DIR,
|
||||
MENU_ENUM_LABEL_VALUE_LOG_DIR,
|
||||
g_defaults.dirs[DEFAULT_DIR_LOGS],
|
||||
MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
|
||||
&group_info,
|
||||
&subgroup_info,
|
||||
parent_group,
|
||||
general_write_handler,
|
||||
general_read_handler);
|
||||
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
|
||||
|
||||
END_SUB_GROUP(list, list_info, parent_group);
|
||||
END_GROUP(list, list_info, parent_group);
|
||||
break;
|
||||
|
@ -1393,6 +1393,7 @@ enum msg_hash_enums
|
||||
MENU_ENUM_LABEL_VOLUME_DOWN,
|
||||
|
||||
MENU_LABEL(LOG_VERBOSITY),
|
||||
MENU_LABEL(LOG_TO_FILE),
|
||||
|
||||
MENU_ENUM_LABEL_OVERLAY_NEXT,
|
||||
|
||||
@ -1703,6 +1704,7 @@ enum msg_hash_enums
|
||||
MENU_LABEL(VIDEO_SHADER_DIR),
|
||||
MENU_LABEL(VIDEO_FILTER_DIR),
|
||||
MENU_LABEL(AUDIO_FILTER_DIR),
|
||||
MENU_LABEL(LOG_DIR),
|
||||
|
||||
MENU_LABEL(TURBO_DEADZONE_LIST),
|
||||
MENU_LABEL(LIBRETRO_DIR_PATH),
|
||||
@ -2477,6 +2479,7 @@ enum msg_hash_enums
|
||||
#define MENU_LABEL_RGUI_CONFIG_DIRECTORY 0x0cb3e005U
|
||||
#define MENU_LABEL_ASSETS_DIRECTORY 0xde1ae8ecU
|
||||
#define MENU_LABEL_CACHE_DIRECTORY 0x851dfb8dU
|
||||
#define MENU_LABEL_LOG_DIR 0x87BB87E5U
|
||||
|
||||
/* RDB settings */
|
||||
|
||||
|
104
retroarch.c
104
retroarch.c
@ -187,7 +187,6 @@ enum
|
||||
RA_OPT_FEATURES,
|
||||
RA_OPT_VERSION,
|
||||
RA_OPT_EOF_EXIT,
|
||||
RA_OPT_LOG_FILE,
|
||||
RA_OPT_MAX_FRAMES,
|
||||
RA_OPT_MAX_FRAMES_SCREENSHOT,
|
||||
RA_OPT_MAX_FRAMES_SCREENSHOT_PATH
|
||||
@ -292,6 +291,8 @@ static retro_time_t libretro_core_runtime_usec = 0;
|
||||
static char runtime_content_path[PATH_MAX_LENGTH] = {0};
|
||||
static char runtime_core_path[PATH_MAX_LENGTH] = {0};
|
||||
|
||||
static bool log_file_created = false;
|
||||
|
||||
extern bool input_driver_flushing_input;
|
||||
|
||||
static char launch_arguments[4096];
|
||||
@ -1084,7 +1085,6 @@ static void retroarch_print_help(const char *arg0)
|
||||
|
||||
puts(" -h, --help Show this help message.");
|
||||
puts(" -v, --verbose Verbose logging.");
|
||||
puts(" --log-file FILE Log messages to FILE.");
|
||||
puts(" --version Show version.");
|
||||
puts(" --features Prints available features compiled into "
|
||||
"program.");
|
||||
@ -1277,9 +1277,6 @@ static void retroarch_parse_input_and_config(int argc, char *argv[])
|
||||
{ "max-frames-ss-path", 1, NULL, RA_OPT_MAX_FRAMES_SCREENSHOT_PATH },
|
||||
{ "eof-exit", 0, NULL, RA_OPT_EOF_EXIT },
|
||||
{ "version", 0, NULL, RA_OPT_VERSION },
|
||||
#ifdef HAVE_FILE_LOGGER
|
||||
{ "log-file", 1, NULL, RA_OPT_LOG_FILE },
|
||||
#endif
|
||||
{ NULL, 0, NULL, 0 }
|
||||
};
|
||||
|
||||
@ -1735,12 +1732,6 @@ static void retroarch_parse_input_and_config(int argc, char *argv[])
|
||||
retroarch_print_version();
|
||||
exit(0);
|
||||
|
||||
#ifdef HAVE_FILE_LOGGER
|
||||
case RA_OPT_LOG_FILE:
|
||||
retro_main_log_file_init(optarg);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 'c':
|
||||
case 'h':
|
||||
case RA_OPT_APPENDCONFIG:
|
||||
@ -1759,19 +1750,8 @@ static void retroarch_parse_input_and_config(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (verbosity_is_enabled())
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
if (settings->bools.log_to_file &&
|
||||
!string_is_empty(settings->paths.log_dir) && !string_is_empty(settings->paths.log_file))
|
||||
{
|
||||
char buf[PATH_MAX_LENGTH];
|
||||
fill_pathname_join(buf, settings->paths.log_dir, settings->paths.log_file, sizeof(buf));
|
||||
RARCH_LOG("Logging to file: %s\n", buf);
|
||||
retro_main_log_file_init(buf);
|
||||
}
|
||||
}
|
||||
rarch_log_file_init();
|
||||
|
||||
#ifdef HAVE_GIT_VERSION
|
||||
RARCH_LOG("RetroArch %s (Git %s)\n",
|
||||
@ -1975,7 +1955,8 @@ bool retroarch_main_init(int argc, char *argv[])
|
||||
|
||||
rarch_error_on_init = true;
|
||||
|
||||
retro_main_log_file_init(NULL);
|
||||
/* Have to initialise non-file logging once at the start... */
|
||||
retro_main_log_file_init(NULL, false);
|
||||
|
||||
retroarch_parse_input_and_config(argc, argv);
|
||||
|
||||
@ -1993,8 +1974,8 @@ bool retroarch_main_init(int argc, char *argv[])
|
||||
RARCH_LOG_OUTPUT("CPU Model Name: %s\n", cpu_model);
|
||||
|
||||
retroarch_get_capabilities(RARCH_CAPABILITIES_CPU, str, sizeof(str));
|
||||
fprintf(stderr, "%s: %s\n", msg_hash_to_str(MSG_CAPABILITIES), str);
|
||||
fprintf(stderr, "Built: %s\n", __DATE__);
|
||||
RARCH_LOG_OUTPUT("%s: %s\n", msg_hash_to_str(MSG_CAPABILITIES), str);
|
||||
RARCH_LOG_OUTPUT("Built: %s\n", __DATE__);
|
||||
RARCH_LOG_OUTPUT("Version: %s\n", PACKAGE_VERSION);
|
||||
#ifdef HAVE_GIT_VERSION
|
||||
RARCH_LOG_OUTPUT("Git: %s\n", retroarch_git_version);
|
||||
@ -5296,3 +5277,74 @@ finish:
|
||||
free(info_buf);
|
||||
#endif
|
||||
}
|
||||
|
||||
void rarch_log_file_init(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
FILE *fp = NULL;
|
||||
bool success = false;
|
||||
|
||||
/* If nothing has changed, do nothing */
|
||||
if ((!settings->bools.log_to_file && !is_logging_to_file()) ||
|
||||
(settings->bools.log_to_file && is_logging_to_file()))
|
||||
return;
|
||||
|
||||
/* If we are currently logging to file and wish to stop,
|
||||
* de-initialise existing logger... */
|
||||
if (!settings->bools.log_to_file && is_logging_to_file())
|
||||
{
|
||||
retro_main_log_file_deinit();
|
||||
/* ...and revert to console */
|
||||
retro_main_log_file_init(NULL, false);
|
||||
return;
|
||||
}
|
||||
|
||||
/* If we reach this point, then we are not currently
|
||||
* logging to file, and wish to do so */
|
||||
|
||||
/* > Check whether we are already logging to console */
|
||||
fp = retro_main_log_file();
|
||||
if (fp)
|
||||
{
|
||||
/* De-initialise existing logger */
|
||||
retro_main_log_file_deinit();
|
||||
}
|
||||
|
||||
/* > Attempt to initialise log file */
|
||||
if (!string_is_empty(settings->paths.log_dir))
|
||||
{
|
||||
char buf[PATH_MAX_LENGTH];
|
||||
fill_pathname_join(buf, settings->paths.log_dir, file_path_str(FILE_PATH_DEFAULT_EVENT_LOG), sizeof(buf));
|
||||
if (!string_is_empty(buf))
|
||||
{
|
||||
/* When RetroArch is launched, log file is overwritten.
|
||||
* On subsequent calls within the same session, it is appended to. */
|
||||
retro_main_log_file_init(buf, log_file_created);
|
||||
log_file_created = true;
|
||||
success = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* > Fall back to console logging if something went wrong */
|
||||
if (!success)
|
||||
retro_main_log_file_init(NULL, false);
|
||||
}
|
||||
|
||||
void rarch_log_file_deinit(void)
|
||||
{
|
||||
FILE *fp = NULL;
|
||||
|
||||
/* De-initialise existing logger, if currently logging to file */
|
||||
if (is_logging_to_file())
|
||||
{
|
||||
retro_main_log_file_deinit();
|
||||
}
|
||||
|
||||
/* If logging is currently disabled... */
|
||||
fp = retro_main_log_file();
|
||||
if (!fp)
|
||||
{
|
||||
/* ...initialise logging to console */
|
||||
retro_main_log_file_init(NULL, false);
|
||||
}
|
||||
}
|
||||
|
@ -428,6 +428,10 @@ bool rarch_write_debug_info(void);
|
||||
|
||||
void rarch_get_cpu_architecture_string(char *cpu_arch_str, size_t len);
|
||||
|
||||
void rarch_log_file_init(void);
|
||||
|
||||
void rarch_log_file_deinit(void);
|
||||
|
||||
RETRO_END_DECLS
|
||||
|
||||
#endif
|
||||
|
10
verbosity.c
10
verbosity.c
@ -111,7 +111,7 @@ void *retro_main_log_file(void)
|
||||
return log_file_fp;
|
||||
}
|
||||
|
||||
void retro_main_log_file_init(const char *path)
|
||||
void retro_main_log_file_init(const char *path, bool append)
|
||||
{
|
||||
if (log_file_initialized)
|
||||
return;
|
||||
@ -125,7 +125,7 @@ void retro_main_log_file_init(const char *path)
|
||||
if (path == NULL)
|
||||
return;
|
||||
|
||||
log_file_fp = (FILE*)fopen_utf8(path, "wb");
|
||||
log_file_fp = (FILE*)fopen_utf8(path, append ? "ab" : "wb");
|
||||
log_file_initialized = true;
|
||||
|
||||
#if !defined(PS2) /* TODO: PS2 IMPROVEMENT */
|
||||
@ -145,6 +145,8 @@ void retro_main_log_file_deinit(void)
|
||||
if (log_file_buf)
|
||||
free(log_file_buf);
|
||||
log_file_buf = NULL;
|
||||
|
||||
log_file_initialized = false;
|
||||
}
|
||||
|
||||
#if !defined(HAVE_LOGGER)
|
||||
@ -210,11 +212,7 @@ void RARCH_LOG_V(const char *tag, const char *fmt, va_list ap)
|
||||
#if defined(HAVE_QT) || defined(__WINRT__)
|
||||
char buffer[1024];
|
||||
#endif
|
||||
#ifdef HAVE_FILE_LOGGER
|
||||
FILE *fp = (FILE*)retro_main_log_file();
|
||||
#else
|
||||
FILE *fp = stderr;
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_QT) || defined(__WINRT__)
|
||||
buffer[0] = '\0';
|
||||
|
@ -39,7 +39,7 @@ void *retro_main_log_file(void);
|
||||
|
||||
void retro_main_log_file_deinit(void);
|
||||
|
||||
void retro_main_log_file_init(const char *path);
|
||||
void retro_main_log_file_init(const char *path, bool append);
|
||||
|
||||
bool is_logging_to_file(void);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user