2 * Logging facility for debug/info messages.
3 * _EGL_FATAL messages are printed to stderr
4 * The EGL_LOG_LEVEL var controls the output of other warning/info/debug msgs.
14 #define MAXSTRING 1000
15 #define FALLBACK_LOG_LEVEL _EGL_WARNING
16 #define FALLBACK_LOG_LEVEL_STR "warning"
18 static EGLint ReportingLevel
= -1;
22 log_level_initialize(void)
24 #if defined(_EGL_PLATFORM_X)
25 char *log_env
= getenv("EGL_LOG_LEVEL");
30 if (log_env
== NULL
) {
31 ReportingLevel
= FALLBACK_LOG_LEVEL
;
33 else if (strcasecmp(log_env
, "fatal") == 0) {
34 ReportingLevel
= _EGL_FATAL
;
36 else if (strcasecmp(log_env
, "warning") == 0) {
37 ReportingLevel
= _EGL_WARNING
;
39 else if (strcasecmp(log_env
, "info") == 0) {
40 ReportingLevel
= _EGL_INFO
;
42 else if (strcasecmp(log_env
, "debug") == 0) {
43 ReportingLevel
= _EGL_DEBUG
;
46 fprintf(stderr
, "Unrecognized EGL_LOG_LEVEL environment variable value. "
47 "Expected one of \"fatal\", \"warning\", \"info\", \"debug\". "
48 "Got \"%s\". Falling back to \"%s\".\n",
49 log_env
, FALLBACK_LOG_LEVEL_STR
);
50 ReportingLevel
= FALLBACK_LOG_LEVEL
;
56 * Log a message to stderr.
57 * \param level one of _EGL_FATAL, _EGL_WARNING, _EGL_INFO, _EGL_DEBUG.
60 _eglLog(EGLint level
, const char *fmtStr
, ...)
65 static int log_level_initialized
= 0;
67 if (!log_level_initialized
) {
68 log_level_initialize();
69 log_level_initialized
= 1;
72 if (level
<= ReportingLevel
) {
90 va_start(args
, fmtStr
);
91 vsnprintf(msg
, MAXSTRING
, fmtStr
, args
);
94 fprintf(stderr
, "libEGL %s: %s\n", levelStr
, msg
);
96 if (level
== _EGL_FATAL
) {
97 exit(1); /* or abort()? */