mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 16:18:06 +02:00
util/log: add support for MESA_LOG_FILE
It allows logger_file to log to any file. v2: check "geteuid() == getuid()" Reviewed-by: Emma Anholt <emma@anholt.net> Reviewed-by: Jesse Natalie <jenatali@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21454>
This commit is contained in:
parent
7d8d64426b
commit
8f0a7e848f
2 changed files with 32 additions and 1 deletions
|
|
@ -62,6 +62,7 @@ static const struct debug_control mesa_log_control_options[] = {
|
|||
};
|
||||
|
||||
static uint32_t mesa_log_control;
|
||||
static FILE *mesa_log_file;
|
||||
|
||||
static void
|
||||
mesa_log_init_once(void)
|
||||
|
|
@ -78,6 +79,21 @@ mesa_log_init_once(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
mesa_log_file = stderr;
|
||||
|
||||
#if !DETECT_OS_WINDOWS
|
||||
if (geteuid() == getuid()) {
|
||||
const char *log_file = os_get_option("MESA_LOG_FILE");
|
||||
if (log_file) {
|
||||
FILE *fp = fopen(log_file, "w");
|
||||
if (fp) {
|
||||
mesa_log_file = fp;
|
||||
mesa_log_control |= MESA_LOG_CONTROL_FILE;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if DETECT_OS_UNIX
|
||||
if (mesa_log_control & MESA_LOG_CONTROL_SYSLOG)
|
||||
openlog(util_get_process_name(), LOG_NDELAY | LOG_PID, LOG_USER);
|
||||
|
|
@ -184,7 +200,7 @@ logger_file(enum mesa_log_level level,
|
|||
const char *format,
|
||||
va_list va)
|
||||
{
|
||||
FILE *fp = stderr;
|
||||
FILE *fp = mesa_log_file;
|
||||
char local_msg[1024];
|
||||
char *msg = logger_vasnprintf(local_msg, sizeof(local_msg),
|
||||
LOGGER_VASNPRINTF_AFFIX_TAG |
|
||||
|
|
@ -193,6 +209,7 @@ logger_file(enum mesa_log_level level,
|
|||
level, tag, format, va);
|
||||
|
||||
fprintf(fp, "%s", msg);
|
||||
fflush(fp);
|
||||
|
||||
if (msg != local_msg)
|
||||
free(msg);
|
||||
|
|
@ -275,6 +292,16 @@ logger_android(enum mesa_log_level level,
|
|||
|
||||
#endif /* DETECT_OS_ANDROID */
|
||||
|
||||
/* This is for use with debug functions that take a FILE, such as
|
||||
* nir_print_shader, although switching to nir_log_shader* is preferred.
|
||||
*/
|
||||
FILE *
|
||||
mesa_log_get_file(void)
|
||||
{
|
||||
mesa_log_init();
|
||||
return mesa_log_file;
|
||||
}
|
||||
|
||||
void
|
||||
mesa_log(enum mesa_log_level level, const char *tag, const char *format, ...)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
#define MESA_LOG_H
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "util/macros.h"
|
||||
|
||||
|
|
@ -43,6 +44,9 @@ enum mesa_log_level {
|
|||
MESA_LOG_DEBUG,
|
||||
};
|
||||
|
||||
FILE *
|
||||
mesa_log_get_file(void);
|
||||
|
||||
void PRINTFLIKE(3, 4)
|
||||
mesa_log(enum mesa_log_level, const char *tag, const char *format, ...);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue