Mesa (master): mesa: new MESA_LOG_FILE env var to log errors, warnings, etc ., to a file

Brian Paul brianp at kemper.freedesktop.org
Mon Jun 25 22:10:39 UTC 2012


Module: Mesa
Branch: master
Commit: 9ccf5bffe360def72c8f96340a524fdd672354ec
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ccf5bffe360def72c8f96340a524fdd672354ec

Author: Brian Paul <brianp at vmware.com>
Date:   Mon Jun 25 11:43:03 2012 -0600

mesa: new MESA_LOG_FILE env var to log errors, warnings, etc., to a file

Reviewed-by: Jose Fonseca <jfonseca at vmware.com>

---

 docs/envvars.html      |    2 ++
 src/mesa/main/errors.c |   14 ++++++++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/docs/envvars.html b/docs/envvars.html
index fffb50a..102ea28 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 69dbb65..ef78a0b 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 




More information about the mesa-commit mailing list