Dukky: Add and utilise a jserrors category

Normal, and verbose logging will now also log all JS errors in order that we
stand a chance of debugging things more easily when testing.

Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
This commit is contained in:
Daniel Silverstone 2019-08-02 10:09:29 +01:00
parent 6683818c18
commit 9742a8317f
5 changed files with 10 additions and 8 deletions

View File

@ -45,7 +45,7 @@
# override NETSURF_LOG_LEVEL := DEBUG # override NETSURF_LOG_LEVEL := DEBUG
### To change the compiled in default log, change this ### To change the compiled in default log, change this
# override NETSURF_DEFAULT_LOG_FILTER := level:WARNING # override NETSURF_BUILTIN_LOG_FILTER := "(level:WARNING || cat:jserrors)"
### To change the compiled in *verbose* log, change this ### To change the compiled in *verbose* log, change this
# override NETSURF_DEFAULT_VERBOSE_FILTER := level:VERBOSE # override NETSURF_BUILTIN_VERBOSE_FILTER := "(level:VERBOSE || cat:jserrors)"

View File

@ -84,10 +84,10 @@ NETSURF_USE_NSLOG := AUTO
# Valid options are: DEEPDEBUG, DEBUG, VERBOSE, INFO, WARNING, ERROR, CRITICAL # Valid options are: DEEPDEBUG, DEBUG, VERBOSE, INFO, WARNING, ERROR, CRITICAL
NETSURF_LOG_LEVEL := INFO NETSURF_LOG_LEVEL := INFO
# The log filter set during log initialisation before options are available # The log filter set during log initialisation before options are available
NETSURF_BUILTIN_LOG_FILTER := level:WARNING NETSURF_BUILTIN_LOG_FILTER := "(level:WARNING || cat:jserrors)"
# The log filter set during log initialisation before options are available # The log filter set during log initialisation before options are available
# if the logging level is set to verbose # if the logging level is set to verbose
NETSURF_BUILTIN_VERBOSE_FILTER := level:VERBOSE NETSURF_BUILTIN_VERBOSE_FILTER := "(level:VERBOSE || cat:jserrors)"
# Enable stripping the NetSurf binary # Enable stripping the NetSurf binary
# Valid options: YES, NO # Valid options: YES, NO

View File

@ -761,7 +761,7 @@ static void dukky_dump_error(duk_context *ctx)
/* stack is ..., errobj */ /* stack is ..., errobj */
duk_idx_t stacktop = duk_get_top(ctx); duk_idx_t stacktop = duk_get_top(ctx);
if (!duk_is_error(ctx, -1)) { if (!duk_is_error(ctx, -1)) {
NSLOG(dukky, INFO, "Uncaught non-Error derived error in JS: %s", duk_safe_to_string(ctx, -1)); NSLOG(jserrors, WARNING, "Uncaught non-Error derived error in JS: %s", duk_safe_to_string(ctx, -1));
} else { } else {
#define GETTER(what) \ #define GETTER(what) \
if (duk_has_prop_string(ctx, stacktop - 1, what)) { \ if (duk_has_prop_string(ctx, stacktop - 1, what)) { \
@ -781,11 +781,11 @@ static void dukky_dump_error(duk_context *ctx)
GETTER("fileName"); GETTER("fileName");
GETTER("lineNumber"); GETTER("lineNumber");
GETTER("stack"); GETTER("stack");
NSLOG(dukky, DEBUG, "Uncaught error in JS: %s: %s", NSLOG(jserrors, DEBUG, "Uncaught error in JS: %s: %s",
duk_safe_to_string(ctx, -5), duk_safe_to_string(ctx, -4)); duk_safe_to_string(ctx, -5), duk_safe_to_string(ctx, -4));
NSLOG(dukky, DEBUG, " was at: %s line %s", NSLOG(jserrors, DEBUG, " was at: %s line %s",
duk_safe_to_string(ctx, -3), duk_safe_to_string(ctx, -2)); duk_safe_to_string(ctx, -3), duk_safe_to_string(ctx, -2));
NSLOG(dukky, DEBUG, " Stack trace: %s", NSLOG(jserrors, DEBUG, " Stack trace: %s",
duk_safe_to_string(ctx, -1)); duk_safe_to_string(ctx, -1));
#undef GETTER #undef GETTER
} }

View File

@ -100,6 +100,7 @@ NSLOG_DEFINE_CATEGORY(schedule, "Scheduler");
NSLOG_DEFINE_CATEGORY(fbtk, "Framebuffer toolkit"); NSLOG_DEFINE_CATEGORY(fbtk, "Framebuffer toolkit");
NSLOG_DEFINE_CATEGORY(layout, "Layout"); NSLOG_DEFINE_CATEGORY(layout, "Layout");
NSLOG_DEFINE_CATEGORY(dukky, "Duktape JavaScript Binding"); NSLOG_DEFINE_CATEGORY(dukky, "Duktape JavaScript Binding");
NSLOG_DEFINE_CATEGORY(jserrors, "JavaScript error messages");
static void static void
netsurf_render_log(void *_ctx, netsurf_render_log(void *_ctx,

View File

@ -85,6 +85,7 @@ NSLOG_DECLARE_CATEGORY(schedule);
NSLOG_DECLARE_CATEGORY(fbtk); NSLOG_DECLARE_CATEGORY(fbtk);
NSLOG_DECLARE_CATEGORY(layout); NSLOG_DECLARE_CATEGORY(layout);
NSLOG_DECLARE_CATEGORY(dukky); NSLOG_DECLARE_CATEGORY(dukky);
NSLOG_DECLARE_CATEGORY(jserrors);
#else /* WITH_NSLOG */ #else /* WITH_NSLOG */