diff options
author | Brian Paul <[email protected]> | 2012-06-25 11:43:03 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2012-06-25 16:10:01 -0600 |
commit | 9ccf5bffe360def72c8f96340a524fdd672354ec (patch) | |
tree | 6b16a310a5622bd186e15eb4de62e4b6f4ef1544 | |
parent | 0f530d2dff20ccccb016341d0b65123e5868bbb4 (diff) |
mesa: new MESA_LOG_FILE env var to log errors, warnings, etc., to a file
Reviewed-by: Jose Fonseca <[email protected]>
-rw-r--r-- | docs/envvars.html | 2 | ||||
-rw-r--r-- | src/mesa/main/errors.c | 14 |
2 files changed, 14 insertions, 2 deletions
diff --git a/docs/envvars.html b/docs/envvars.html index fffb50a4718..102ea287eb8 100644 --- a/docs/envvars.html +++ b/docs/envvars.html @@ -42,6 +42,8 @@ sometimes be useful for debugging end-user issues. printed to stderr.<br> If the value of MESA_DEBUG is 'FP' floating point arithmetic errors will generate exceptions. +<li>MESA_LOG_FILE - specifies a file name for logging all errors, warnings, +etc., rather than stderr <li>MESA_TEX_PROG - if set, implement conventional texture env modes with fragment programs (intended for developers only) <li>MESA_TNL_PROG - if set, implement conventional vertex transformation diff --git a/src/mesa/main/errors.c b/src/mesa/main/errors.c index 69dbb65cf40..ef78a0bca46 100644 --- a/src/mesa/main/errors.c +++ b/src/mesa/main/errors.c @@ -801,12 +801,21 @@ output_if_debug(const char *prefixString, const char *outputString, GLboolean newline) { static int debug = -1; + static FILE *fout = NULL; /* Init the local 'debug' var once. * Note: the _mesa_init_debug() function should have been called * by now so MESA_DEBUG_FLAGS will be initialized. */ if (debug == -1) { + /* If MESA_LOG_FILE env var is set, log Mesa errors, warnings, + * etc to the named file. Otherwise, output to stderr. + */ + const char *logFile = _mesa_getenv("MESA_LOG_FILE"); + if (logFile) + fout = fopen(logFile, "w"); + if (!fout) + fout = stderr; #ifdef DEBUG /* in debug builds, print messages unless MESA_DEBUG="silent" */ if (MESA_DEBUG_FLAGS & DEBUG_SILENT) @@ -821,9 +830,10 @@ output_if_debug(const char *prefixString, const char *outputString, /* Now only print the string if we're required to do so. */ if (debug) { - fprintf(stderr, "%s: %s", prefixString, outputString); + fprintf(fout, "%s: %s", prefixString, outputString); if (newline) - fprintf(stderr, "\n"); + fprintf(fout, "\n"); + fflush(fout); #if defined(_WIN32) && !defined(_WIN32_WCE) /* stderr from windows applications without console is not usually |