1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-01-09 22:38:01 +00:00

Add debug-log setting to log everything when stderr is redirected to file

Based on code from BFGMiner
This commit is contained in:
Jan Berdajs 2014-07-06 01:07:32 +02:00
parent 485ec9ac88
commit eb6f47e503
4 changed files with 43 additions and 37 deletions

16
api.c
View File

@ -2755,9 +2755,10 @@ static void debugstate(struct io_data *io_data, __maybe_unused SOCKETTYPE c, cha
opt_quiet = false; opt_quiet = false;
break; break;
case 'd': case 'd':
opt_debug ^= true; opt_debug = true;
opt_verbose = opt_debug; opt_debug_console ^= true;
if (opt_debug) opt_verbose = opt_debug_console;
if (opt_debug_console)
opt_quiet = false; opt_quiet = false;
break; break;
case 'r': case 'r':
@ -2771,7 +2772,7 @@ static void debugstate(struct io_data *io_data, __maybe_unused SOCKETTYPE c, cha
break; break;
case 'n': case 'n':
opt_verbose = false; opt_verbose = false;
opt_debug = false; opt_debug_console = false;
opt_quiet = false; opt_quiet = false;
opt_protocol = false; opt_protocol = false;
want_per_device_stats = false; want_per_device_stats = false;
@ -2799,7 +2800,7 @@ static void debugstate(struct io_data *io_data, __maybe_unused SOCKETTYPE c, cha
root = api_add_bool(root, "Silent", &opt_realquiet, false); root = api_add_bool(root, "Silent", &opt_realquiet, false);
root = api_add_bool(root, "Quiet", &opt_quiet, false); root = api_add_bool(root, "Quiet", &opt_quiet, false);
root = api_add_bool(root, "Verbose", &opt_verbose, false); root = api_add_bool(root, "Verbose", &opt_verbose, false);
root = api_add_bool(root, "Debug", &opt_debug, false); root = api_add_bool(root, "Debug", &opt_debug_console, false);
root = api_add_bool(root, "RPCProto", &opt_protocol, false); root = api_add_bool(root, "RPCProto", &opt_protocol, false);
root = api_add_bool(root, "PerDevice", &want_per_device_stats, false); root = api_add_bool(root, "PerDevice", &want_per_device_stats, false);
root = api_add_bool(root, "WorkTime", &opt_worktime, false); root = api_add_bool(root, "WorkTime", &opt_worktime, false);
@ -3362,7 +3363,6 @@ static void *quit_thread(__maybe_unused void *userdata)
mutex_lock(&quit_restart_lock); mutex_lock(&quit_restart_lock);
mutex_unlock(&quit_restart_lock); mutex_unlock(&quit_restart_lock);
if (opt_debug)
applog(LOG_DEBUG, "API: killing sgminer"); applog(LOG_DEBUG, "API: killing sgminer");
kill_work(); kill_work();
@ -3376,7 +3376,6 @@ static void *restart_thread(__maybe_unused void *userdata)
mutex_lock(&quit_restart_lock); mutex_lock(&quit_restart_lock);
mutex_unlock(&quit_restart_lock); mutex_unlock(&quit_restart_lock);
if (opt_debug)
applog(LOG_DEBUG, "API: restarting sgminer"); applog(LOG_DEBUG, "API: restarting sgminer");
app_restart(); app_restart();
@ -3734,12 +3733,10 @@ void api(int api_thr_id)
else else
buf[n] = '\0'; buf[n] = '\0';
if (opt_debug) {
if (SOCKETFAIL(n)) if (SOCKETFAIL(n))
applog(LOG_DEBUG, "API: recv failed: %s", SOCKERRMSG); applog(LOG_DEBUG, "API: recv failed: %s", SOCKERRMSG);
else else
applog(LOG_DEBUG, "API: recv command: (%d) '%s'", n, buf); applog(LOG_DEBUG, "API: recv command: (%d) '%s'", n, buf);
}
if (!SOCKETFAIL(n)) { if (!SOCKETFAIL(n)) {
// the time of the request in now // the time of the request in now
@ -3892,7 +3889,6 @@ die:
free(apisock); free(apisock);
if (opt_debug)
applog(LOG_DEBUG, "API: terminating due to: %s", applog(LOG_DEBUG, "API: terminating due to: %s",
do_a_quit ? "QUIT" : (do_a_restart ? "RESTART" : (bye ? "BYE" : "UNKNOWN!"))); do_a_quit ? "QUIT" : (do_a_restart ? "RESTART" : (bye ? "BYE" : "UNKNOWN!")));

View File

@ -16,6 +16,7 @@
#include "miner.h" #include "miner.h"
bool opt_debug = false; bool opt_debug = false;
bool opt_debug_console = false;
bool opt_verbose = false; bool opt_verbose = false;
int last_date_output_day = 0; int last_date_output_day = 0;
int opt_log_show_date = false; int opt_log_show_date = false;
@ -69,13 +70,11 @@ void applogsiz(int prio, int size, const char* fmt, ...)
void vapplogsiz(int prio, int size, const char* fmt, va_list args) void vapplogsiz(int prio, int size, const char* fmt, va_list args)
{ {
if (opt_debug || prio != LOG_DEBUG) { if (opt_debug || prio != LOG_DEBUG) {
if (use_syslog || opt_verbose || prio <= opt_log_level) {
char *tmp42 = (char *)calloc(size + 1, 1); char *tmp42 = (char *)calloc(size + 1, 1);
vsnprintf(tmp42, size, fmt, args); vsnprintf(tmp42, size, fmt, args);
_applog(prio, tmp42, false); _applog(prio, tmp42, false);
free(tmp42); free(tmp42);
} }
}
} }
/* /*
@ -91,6 +90,11 @@ void _applog(int prio, const char *str, bool force)
if (0) {} if (0) {}
#endif #endif
else { else {
bool write_console = opt_debug_console || (opt_verbose && prio != LOG_DEBUG) || prio <= opt_log_level;
bool write_stderr = !isatty(fileno((FILE *)stderr));
if (!(write_console || write_stderr))
return;
char datetime[64]; char datetime[64];
struct timeval tv = {0, 0}; struct timeval tv = {0, 0};
struct tm *tm; struct tm *tm;
@ -128,11 +132,13 @@ void _applog(int prio, const char *str, bool force)
} }
/* Only output to stderr if it's not going to the screen as well */ /* Only output to stderr if it's not going to the screen as well */
if (!isatty(fileno((FILE *)stderr))) { if (write_stderr) {
fprintf(stderr, "%s%s\n", datetime, str); /* atomic write to stderr */ fprintf(stderr, "%s%s\n", datetime, str); /* atomic write to stderr */
fflush(stderr); fflush(stderr);
} }
if (write_console) {
my_log_curses(prio, datetime, str, force); my_log_curses(prio, datetime, str, force);
} }
}
} }

View File

@ -19,6 +19,7 @@ enum {
/* debug flags */ /* debug flags */
extern bool opt_debug; extern bool opt_debug;
extern bool opt_debug_console;
extern bool opt_verbose; extern bool opt_verbose;
extern bool opt_realquiet; extern bool opt_realquiet;
extern bool want_per_device_stats; extern bool want_per_device_stats;
@ -40,12 +41,10 @@ extern void _applog(int prio, const char *str, bool force);
#define forcelog(prio, fmt, ...) do { \ #define forcelog(prio, fmt, ...) do { \
if (opt_debug || prio != LOG_DEBUG) { \ if (opt_debug || prio != LOG_DEBUG) { \
if (use_syslog || opt_verbose || prio <= opt_log_level) { \
char tmp42[LOGBUFSIZ]; \ char tmp42[LOGBUFSIZ]; \
snprintf(tmp42, sizeof(tmp42), fmt, ##__VA_ARGS__); \ snprintf(tmp42, sizeof(tmp42), fmt, ##__VA_ARGS__); \
_applog(prio, tmp42, true); \ _applog(prio, tmp42, true); \
} \ } \
} \
} while (0) } while (0)
#define quit(status, fmt, ...) do { \ #define quit(status, fmt, ...) do { \

View File

@ -1100,6 +1100,7 @@ static char *set_pool_description(char *arg)
static char *enable_debug(bool *flag) static char *enable_debug(bool *flag)
{ {
*flag = true; *flag = true;
opt_debug_console = true;
/* Turn on verbose output, too. */ /* Turn on verbose output, too. */
opt_verbose = true; opt_verbose = true;
return NULL; return NULL;
@ -1304,6 +1305,9 @@ struct opt_table opt_config_table[] = {
OPT_WITHOUT_ARG("--debug|-D", OPT_WITHOUT_ARG("--debug|-D",
enable_debug, &opt_debug, enable_debug, &opt_debug,
"Enable debug output"), "Enable debug output"),
OPT_WITHOUT_ARG("--debug-log",
opt_set_bool, &opt_debug,
"Enable debug logging when stderr is redirected to file"),
OPT_WITH_ARG("--default-profile", OPT_WITH_ARG("--default-profile",
set_default_profile, NULL, NULL, set_default_profile, NULL, NULL,
"Set Default Profile"), "Set Default Profile"),
@ -4631,7 +4635,7 @@ retry:
wlogprint("[D]ebug: %s\n[P]er-device: %s\n[Q]uiet: %s\n[V]erbose: %s\n" wlogprint("[D]ebug: %s\n[P]er-device: %s\n[Q]uiet: %s\n[V]erbose: %s\n"
"[R]PC debug: %s\n[W]orkTime details: %s\n[I]ncognito: %s\n" "[R]PC debug: %s\n[W]orkTime details: %s\n[I]ncognito: %s\n"
"co[M]pact: %s\n[L]og interval: %d\n[Z]ero statistics\n", "co[M]pact: %s\n[L]og interval: %d\n[Z]ero statistics\n",
opt_debug ? "on" : "off", opt_debug_console ? "on" : "off",
want_per_device_stats? "on" : "off", want_per_device_stats? "on" : "off",
opt_quiet ? "on" : "off", opt_quiet ? "on" : "off",
opt_verbose ? "on" : "off", opt_verbose ? "on" : "off",
@ -4655,7 +4659,7 @@ retry:
goto retry; goto retry;
} else if (!strncasecmp(&input, "n", 1)) { } else if (!strncasecmp(&input, "n", 1)) {
opt_verbose = false; opt_verbose = false;
opt_debug = false; opt_debug_console = false;
opt_quiet = false; opt_quiet = false;
opt_protocol = false; opt_protocol = false;
opt_compact = false; opt_compact = false;
@ -4664,11 +4668,12 @@ retry:
switch_logsize(false); switch_logsize(false);
goto retry; goto retry;
} else if (!strncasecmp(&input, "d", 1)) { } else if (!strncasecmp(&input, "d", 1)) {
opt_debug ^= true; opt_debug = true;
opt_verbose = opt_debug; opt_debug_console ^= true;
if (opt_debug) opt_verbose = opt_debug_console;
if (opt_debug_console)
opt_quiet = false; opt_quiet = false;
wlogprint("Debug mode %s\n", opt_debug ? "enabled" : "disabled"); wlogprint("Debug mode %s\n", opt_debug_console ? "enabled" : "disabled");
goto retry; goto retry;
} else if (!strncasecmp(&input, "i", 1)) { } else if (!strncasecmp(&input, "i", 1)) {
opt_incognito ^= true; opt_incognito ^= true;