SDL_log.c File Reference
`#include "./SDL_internal.h"`
`#include "SDL_error.h"`
`#include "SDL_log.h"`
Include dependency graph for SDL_log.c:

Go to the source code of this file.

## Data Structures

struct | SDL_LogLevel

## Macros

#define | DEFAULT_PRIORITY SDL_LOG_PRIORITY_CRITICAL
#define | DEFAULT_ASSERT_PRIORITY SDL_LOG_PRIORITY_WARN
#define | DEFAULT_APPLICATION_PRIORITY SDL_LOG_PRIORITY_INFO
#define | DEFAULT_TEST_PRIORITY SDL_LOG_PRIORITY_VERBOSE

## Functions

static void | SDL_LogOutput (void *userdata, int category, SDL_LogPriority priority, const char *message)
void | SDL_LogSetAllPriority (SDL_LogPriority priority)
| Set the priority of all log categories. More...
void | SDL_LogSetPriority (int category, SDL_LogPriority priority)
| Set the priority of a particular log category. More...
SDL_LogPriority | SDL_LogGetPriority (int category)
| Get the priority of a particular log category. More...
void | SDL_LogResetPriorities (void)
| Reset all priorities to default. More...
void | SDL_Log (SDL_PRINTF_FORMAT_STRING const char *fmt,...)
| Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. More...
void | SDL_LogVerbose (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
| Log a message with SDL_LOG_PRIORITY_VERBOSE. More...
void | SDL_LogDebug (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
| Log a message with SDL_LOG_PRIORITY_DEBUG. More...
void | SDL_LogInfo (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
| Log a message with SDL_LOG_PRIORITY_INFO. More...
void | SDL_LogWarn (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
| Log a message with SDL_LOG_PRIORITY_WARN. More...
void | SDL_LogError (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
| Log a message with SDL_LOG_PRIORITY_ERROR. More...
void | SDL_LogCritical (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
| Log a message with SDL_LOG_PRIORITY_CRITICAL. More...
void | SDL_LogMessage (int category, SDL_LogPriority priority, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
| Log a message with the specified category and priority. More...
void | SDL_LogMessageV (int category, SDL_LogPriority priority, const char *fmt, va_list ap)
| Log a message with the specified category and priority. More...
void | SDL_LogGetOutputFunction (SDL_LogOutputFunction *callback, void **userdata)
| Get the current log output function. More...
void | SDL_LogSetOutputFunction (SDL_LogOutputFunction callback, void *userdata)
| This function allows you to replace the default log output function with one of your own. More...

## Variables

static SDL_LogLevel * | SDL_loglevels
static SDL_LogPriority | SDL_default_priority = DEFAULT_PRIORITY
static SDL_LogPriority | SDL_assert_priority = DEFAULT_ASSERT_PRIORITY
static SDL_LogPriority | SDL_application_priority = DEFAULT_APPLICATION_PRIORITY
static SDL_LogPriority | SDL_test_priority = DEFAULT_TEST_PRIORITY
static SDL_LogOutputFunction | SDL_log_function = SDL_LogOutput
static void * | SDL_log_userdata = NULL
static const char * | SDL_priority_prefixes [SDL_NUM_LOG_PRIORITIES]

## Macro Definition Documentation

## DEFAULT_APPLICATION_PRIORITY

#define DEFAULT_APPLICATION_PRIORITY SDL_LOG_PRIORITY_INFO

Definition at line 42 of file SDL_log.c.

Referenced by SDL_LogResetPriorities().

## DEFAULT_ASSERT_PRIORITY

#define DEFAULT_ASSERT_PRIORITY SDL_LOG_PRIORITY_WARN

Definition at line 41 of file SDL_log.c.

Referenced by SDL_LogResetPriorities().

## DEFAULT_PRIORITY

#define DEFAULT_PRIORITY SDL_LOG_PRIORITY_CRITICAL

Definition at line 40 of file SDL_log.c.

Referenced by SDL_LogResetPriorities().

## DEFAULT_TEST_PRIORITY

#define DEFAULT_TEST_PRIORITY SDL_LOG_PRIORITY_VERBOSE

Definition at line 43 of file SDL_log.c.

Referenced by SDL_LogResetPriorities().

## Function Documentation

## SDL_Log()

void SDL_Log | ( | SDL_PRINTF_FORMAT_STRING const char * | fmt,
|  |  | ...
| ) |  |

Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO.

Definition at line 171 of file SDL_log.c.

References SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, and SDL_LogMessageV().

{
va_list ap;
va_start(ap, fmt);
SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, fmt, ap);
va_end(ap);
}
SDL_LogMessageV
void SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list ap)
Log a message with the specified category and priority.
Definition: SDL_log.c:265
SDL_LOG_PRIORITY_INFO
Definition: SDL_log.h:106
SDL_LOG_CATEGORY_APPLICATION
Definition: SDL_log.h:66

## SDL_LogCritical()

void SDL_LogCritical | ( | int | category,
|  | SDL_PRINTF_FORMAT_STRING const char * | fmt,
|  |  | ...
| ) |  |

Log a message with SDL_LOG_PRIORITY_CRITICAL.

Definition at line 231 of file SDL_log.c.

References SDL_LOG_PRIORITY_CRITICAL, and SDL_LogMessageV().

{
va_list ap;
va_start(ap, fmt);
SDL_LogMessageV(category, SDL_LOG_PRIORITY_CRITICAL, fmt, ap);
va_end(ap);
}
SDL_LOG_PRIORITY_CRITICAL
Definition: SDL_log.h:109
SDL_LogMessageV
void SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list ap)
Log a message with the specified category and priority.
Definition: SDL_log.c:265

## SDL_LogDebug()

void SDL_LogDebug | ( | int | category,
|  | SDL_PRINTF_FORMAT_STRING const char * | fmt,
|  |  | ...
| ) |  |

Log a message with SDL_LOG_PRIORITY_DEBUG.

Definition at line 191 of file SDL_log.c.

References SDL_LOG_PRIORITY_DEBUG, and SDL_LogMessageV().

{
va_list ap;
va_start(ap, fmt);
SDL_LogMessageV(category, SDL_LOG_PRIORITY_DEBUG, fmt, ap);
va_end(ap);
}
SDL_LOG_PRIORITY_DEBUG
Definition: SDL_log.h:105
SDL_LogMessageV
void SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list ap)
Log a message with the specified category and priority.
Definition: SDL_log.c:265

## SDL_LogError()

void SDL_LogError | ( | int | category,
|  | SDL_PRINTF_FORMAT_STRING const char * | fmt,
|  |  | ...
| ) |  |

Log a message with SDL_LOG_PRIORITY_ERROR.

Definition at line 221 of file SDL_log.c.

References SDL_LOG_PRIORITY_ERROR, and SDL_LogMessageV().

{
va_list ap;
va_start(ap, fmt);
SDL_LogMessageV(category, SDL_LOG_PRIORITY_ERROR, fmt, ap);
va_end(ap);
}
SDL_LOG_PRIORITY_ERROR
Definition: SDL_log.h:108
SDL_LogMessageV
void SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list ap)
Log a message with the specified category and priority.
Definition: SDL_log.c:265

## SDL_LogGetOutputFunction()

void SDL_LogGetOutputFunction | ( | SDL_LogOutputFunction * | callback,
|  | void ** | userdata
| ) |  |

Get the current log output function.

Definition at line 433 of file SDL_log.c.

References SDL_log_function, and SDL_log_userdata.

{
if (callback) {
*callback = SDL_log_function;
}
if (userdata) {
*userdata = SDL_log_userdata;
}
}
SDL_log_function
static SDL_LogOutputFunction SDL_log_function
Definition: SDL_log.c:60
callback
static Uint32 callback(Uint32 interval, void *param)
Definition: testtimer.c:34
SDL_log_userdata
static void * SDL_log_userdata
Definition: SDL_log.c:61

## SDL_LogGetPriority()

SDL_LogPriority SDL_LogGetPriority | ( | int | category | ) |

Get the priority of a particular log category.

Definition at line 132 of file SDL_log.c.

References SDL_LogLevel::category, SDL_LogLevel::next, SDL_LogLevel::priority, SDL_application_priority, SDL_assert_priority, SDL_default_priority, SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_CATEGORY_ASSERT, SDL_LOG_CATEGORY_TEST, and SDL_test_priority.

Referenced by SDL_LogMessageV().

{
SDL_LogLevel *entry;
for (entry = SDL_loglevels; entry; entry = entry->next) {
if (entry->category == category) {
return entry->priority;
}
}
if (category == SDL_LOG_CATEGORY_TEST) {
return SDL_test_priority;
} else if (category == SDL_LOG_CATEGORY_APPLICATION) {
return SDL_application_priority;
} else if (category == SDL_LOG_CATEGORY_ASSERT) {
return SDL_assert_priority;
} else {
return SDL_default_priority;
}
}
SDL_test_priority
static SDL_LogPriority SDL_test_priority
Definition: SDL_log.c:59
SDL_loglevels
static SDL_LogLevel * SDL_loglevels
Definition: SDL_log.c:55
SDL_LogLevel::priority
SDL_LogPriority priority
Definition: SDL_log.c:48
SDL_assert_priority
static SDL_LogPriority SDL_assert_priority
Definition: SDL_log.c:57
SDL_default_priority
static SDL_LogPriority SDL_default_priority
Definition: SDL_log.c:56
SDL_LogLevel::category
int category
Definition: SDL_log.c:47
SDL_LogLevel::next
struct SDL_LogLevel * next
Definition: SDL_log.c:49
SDL_LOG_CATEGORY_ASSERT
Definition: SDL_log.h:68
SDL_LogLevel
Definition: SDL_log.c:45
SDL_LOG_CATEGORY_TEST
Definition: SDL_log.h:74
SDL_application_priority
static SDL_LogPriority SDL_application_priority
Definition: SDL_log.c:58
SDL_LOG_CATEGORY_APPLICATION
Definition: SDL_log.h:66

## SDL_LogInfo()

void SDL_LogInfo | ( | int | category,
|  | SDL_PRINTF_FORMAT_STRING const char * | fmt,
|  |  | ...
| ) |  |

Log a message with SDL_LOG_PRIORITY_INFO.

Definition at line 201 of file SDL_log.c.

References SDL_LOG_PRIORITY_INFO, and SDL_LogMessageV().

{
va_list ap;
va_start(ap, fmt);
SDL_LogMessageV(category, SDL_LOG_PRIORITY_INFO, fmt, ap);
va_end(ap);
}
SDL_LogMessageV
void SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list ap)
Log a message with the specified category and priority.
Definition: SDL_log.c:265
SDL_LOG_PRIORITY_INFO
Definition: SDL_log.h:106

## SDL_LogMessage()

void SDL_LogMessage | ( | int | category,
|  | SDL_LogPriority | priority,
|  | SDL_PRINTF_FORMAT_STRING const char * | fmt,
|  |  | ...
| ) |  |

Log a message with the specified category and priority.

Definition at line 241 of file SDL_log.c.

References SDL_LogLevel::category, SDL_LOG_CATEGORY_CUSTOM, SDL_LOG_CATEGORY_RESERVED1, and SDL_LogMessageV().

{
va_list ap;
va_start(ap, fmt);
SDL_LogMessageV(category, priority, fmt, ap);
va_end(ap);
}
SDL_LogMessageV
void SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list ap)
Log a message with the specified category and priority.
Definition: SDL_log.c:265

## SDL_LogMessageV()

void SDL_LogMessageV | ( | int | category,
|  | SDL_LogPriority | priority,
|  | const char * | fmt,
|  | va_list | ap
| ) |  |

Log a message with the specified category and priority.

Definition at line 265 of file SDL_log.c.

References NULL, SDL_log_function, SDL_log_userdata, SDL_LogGetPriority(), SDL_MAX_LOG_MESSAGE, SDL_NUM_LOG_PRIORITIES, SDL_stack_alloc, SDL_stack_free, SDL_strlen, SDL_vsnprintf, and SDLCALL.

Referenced by SDL_Log(), SDL_LogCritical(), SDL_LogDebug(), SDL_LogError(), SDL_LogInfo(), SDL_LogMessage(), SDL_LogVerbose(), and SDL_LogWarn().

{
char *message;
size_t len;
/* Nothing to do if we don't have an output function */
if (!SDL_log_function) {
return;
}
/* Make sure we don't exceed array bounds */
if ((int)priority < 0 || priority >= SDL_NUM_LOG_PRIORITIES) {
return;
}
/* See if we want to do anything with this message */
if (priority < SDL_LogGetPriority(category)) {
return;
}
message = SDL_stack_alloc(char, SDL_MAX_LOG_MESSAGE);
if (!message) {
return;
}
SDL_vsnprintf(message, SDL_MAX_LOG_MESSAGE, fmt, ap);
/* Chop off final endline. */
len = SDL_strlen(message);
if ((len > 0) && (message[len-1] == '\n')) {
message[--len] = '\0';
if ((len > 0) && (message[len-1] == '\r')) { /* catch "\r\n", too. */
message[--len] = '\0';
}
}
SDL_log_function(SDL_log_userdata, category, priority, message);
SDL_stack_free(message);
}
SDL_MAX_LOG_MESSAGE
#define SDL_MAX_LOG_MESSAGE
The maximum size of a log message.
Definition: SDL_log.h:54
message
GLuint GLsizei const GLchar * message
Definition: SDL_opengl_glext.h:2483
len
GLenum GLsizei len
Definition: SDL_opengl_glext.h:2926
SDL_vsnprintf
#define SDL_vsnprintf
Definition: SDL_dynapi_overrides.h:421
SDL_log_function
static SDL_LogOutputFunction SDL_log_function
Definition: SDL_log.c:60
SDL_NUM_LOG_PRIORITIES
Definition: SDL_log.h:110
SDL_stack_alloc
#define SDL_stack_alloc(type, count)
Definition: SDL_stdinc.h:354
SDL_LogGetPriority
SDL_LogPriority SDL_LogGetPriority(int category)
Get the priority of a particular log category.
Definition: SDL_log.c:132
SDL_log_userdata
static void * SDL_log_userdata
Definition: SDL_log.c:61
SDL_strlen
#define SDL_strlen
Definition: SDL_dynapi_overrides.h:393
SDL_stack_free
#define SDL_stack_free(data)
Definition: SDL_stdinc.h:355

## SDL_LogOutput()

static void SDL_LogOutput | ( | void * | userdata,
|  | int | category,
|  | SDL_LogPriority | priority,
|  | const char * | message
| ) |  |

static

Definition at line 314 of file SDL_log.c.

References NULL, sort_controllers::output, SDL_arraysize, SDL_free, SDL_MAX_LOG_MESSAGE, SDL_priority_prefixes, SDL_snprintf, SDL_stack_alloc, SDL_stack_free, SDL_strlen, text, and WIN_UTF8ToString.

{
#if defined(__WIN32__) || defined(__WINRT__)
/* Way too many allocations here, urgh */
/* Note: One can't call SDL_SetError here, since that function itself logs. */
{
char *output;
size_t length;
LPTSTR tstr;
#if !defined(HAVE_STDIO_H) && !defined(__WINRT__)
BOOL attachResult;
DWORD attachError;
unsigned long charsWritten;
DWORD consoleMode;
/* Maybe attach console and get stderr handle */
if (consoleAttached == 0) {
attachResult = AttachConsole(ATTACH_PARENT_PROCESS);
if (!attachResult) {
attachError = GetLastError();
if (attachError == ERROR_INVALID_HANDLE) {
/* This is expected when running from Visual Studio */
/*OutputDebugString(TEXT("Parent process has no console\r\n"));*/
consoleAttached = -1;
} else if (attachError == ERROR_GEN_FAILURE) {
OutputDebugString(TEXT("Could not attach to console of parent process\r\n"));
consoleAttached = -1;
} else if (attachError == ERROR_ACCESS_DENIED) {
/* Already attached */
consoleAttached = 1;
} else {
OutputDebugString(TEXT("Error attaching console\r\n"));
consoleAttached = -1;
}
} else {
/* Newly attached */
consoleAttached = 1;
}
if (consoleAttached == 1) {
stderrHandle = GetStdHandle(STD_ERROR_HANDLE);
if (GetConsoleMode(stderrHandle, &consoleMode) == 0) {
/* WriteConsole fails if the output is redirected to a file. Must use WriteFile instead. */
consoleAttached = 2;
}
}
}
#endif /* !defined(HAVE_STDIO_H) && !defined(__WINRT__) */
length = SDL_strlen(SDL_priority_prefixes[priority]) + 2 + SDL_strlen(message) + 1 + 1 + 1;
output = SDL_stack_alloc(char, length);
SDL_snprintf(output, length, "%s: %s\r\n", SDL_priority_prefixes[priority], message);
tstr = WIN_UTF8ToString(output);
/* Output to debugger */
OutputDebugString(tstr);
#if !defined(HAVE_STDIO_H) && !defined(__WINRT__)
/* Screen output to stderr, if console was attached. */
if (consoleAttached == 1) {
if (!WriteConsole(stderrHandle, tstr, lstrlen(tstr), &charsWritten, NULL)) {
OutputDebugString(TEXT("Error calling WriteConsole\r\n"));
if (GetLastError() == ERROR_NOT_ENOUGH_MEMORY) {
OutputDebugString(TEXT("Insufficient heap memory to write message\r\n"));
}
}
} else if (consoleAttached == 2) {
if (!WriteFile(stderrHandle, output, lstrlenA(output), &charsWritten, NULL)) {
OutputDebugString(TEXT("Error calling WriteFile\r\n"));
}
}
#endif /* !defined(HAVE_STDIO_H) && !defined(__WINRT__) */
SDL_free(tstr);
SDL_stack_free(output);
}
#elif defined(__ANDROID__)
{
char tag[32];
SDL_snprintf(tag, SDL_arraysize(tag), "SDL/%s", GetCategoryPrefix(category));
__android_log_write(SDL_android_priority[priority], tag, message);
}
#elif defined(__APPLE__) && defined(SDL_VIDEO_DRIVER_COCOA)
/* Technically we don't need SDL_VIDEO_DRIVER_COCOA, but that's where this function is defined for now.
*/
extern void SDL_NSLog(const char *text);
{
char *text;
text = SDL_stack_alloc(char, SDL_MAX_LOG_MESSAGE);
if (text) {
SDL_snprintf(text, SDL_MAX_LOG_MESSAGE, "%s: %s", SDL_priority_prefixes[priority], message);
SDL_NSLog(text);
SDL_stack_free(text);
return;
}
}
#elif defined(__PSP__)
{
FILE* pFile;
pFile = fopen ("SDL_Log.txt", "a");
fprintf(pFile, "%s: %s\n", SDL_priority_prefixes[priority], message);
fclose (pFile);
}
#endif
#if HAVE_STDIO_H
fprintf(stderr, "%s: %s\n", SDL_priority_prefixes[priority], message);
#if __NACL__
fflush(stderr);
#endif
#endif
}
SDL_MAX_LOG_MESSAGE
#define SDL_MAX_LOG_MESSAGE
The maximum size of a log message.
Definition: SDL_log.h:54
WIN_UTF8ToString
#define WIN_UTF8ToString(S)
Definition: SDL_windows.h:47
message
GLuint GLsizei const GLchar * message
Definition: SDL_opengl_glext.h:2483
SDL_priority_prefixes
static const char * SDL_priority_prefixes[SDL_NUM_LOG_PRIORITIES]
Definition: SDL_log.c:63
SDL_free
#define SDL_free
Definition: SDL_dynapi_overrides.h:377
SDL_stack_alloc
#define SDL_stack_alloc(type, count)
Definition: SDL_stdinc.h:354
sort_controllers.output
output
Definition: sort_controllers.py:10
NULL
#define NULL
Definition: begin_code.h:164
text
static char text[MAX_TEXT_LENGTH]
Definition: testime.c:47
SDL_strlen
#define SDL_strlen
Definition: SDL_dynapi_overrides.h:393
SDL_snprintf
#define SDL_snprintf
Definition: SDL_dynapi_overrides.h:40
SDL_arraysize
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:93
SDL_stack_free
#define SDL_stack_free(data)
Definition: SDL_stdinc.h:355
length
GLuint GLsizei GLsizei * length
Definition: SDL_opengl_glext.h:669

## SDL_LogResetPriorities()

void SDL_LogResetPriorities | ( | void |  | ) |

Reset all priorities to default.

Note
  This is called in SDL_Quit().

Definition at line 154 of file SDL_log.c.

References DEFAULT_APPLICATION_PRIORITY, DEFAULT_ASSERT_PRIORITY, DEFAULT_PRIORITY, DEFAULT_TEST_PRIORITY, SDL_LogLevel::next, SDL_application_priority, SDL_assert_priority, SDL_default_priority, SDL_free, SDL_loglevels, and SDL_test_priority.

{
SDL_LogLevel *entry;
while (SDL_loglevels) {
entry = SDL_loglevels;
SDL_loglevels = entry->next;
SDL_free(entry);
}
SDL_default_priority = DEFAULT_PRIORITY;
SDL_assert_priority = DEFAULT_ASSERT_PRIORITY;
SDL_application_priority = DEFAULT_APPLICATION_PRIORITY;
SDL_test_priority = DEFAULT_TEST_PRIORITY;
}
DEFAULT_APPLICATION_PRIORITY
#define DEFAULT_APPLICATION_PRIORITY
Definition: SDL_log.c:42
SDL_test_priority
static SDL_LogPriority SDL_test_priority
Definition: SDL_log.c:59
SDL_loglevels
static SDL_LogLevel * SDL_loglevels
Definition: SDL_log.c:55
DEFAULT_ASSERT_PRIORITY
#define DEFAULT_ASSERT_PRIORITY
Definition: SDL_log.c:41
SDL_assert_priority
static SDL_LogPriority SDL_assert_priority
Definition: SDL_log.c:57
SDL_default_priority
static SDL_LogPriority SDL_default_priority
Definition: SDL_log.c:56
SDL_free
#define SDL_free
Definition: SDL_dynapi_overrides.h:377
SDL_LogLevel::next
struct SDL_LogLevel * next
Definition: SDL_log.c:49
SDL_LogLevel
Definition: SDL_log.c:45
DEFAULT_PRIORITY
#define DEFAULT_PRIORITY
Definition: SDL_log.c:40
SDL_application_priority
static SDL_LogPriority SDL_application_priority
Definition: SDL_log.c:58
DEFAULT_TEST_PRIORITY
#define DEFAULT_TEST_PRIORITY
Definition: SDL_log.c:43

## SDL_LogSetAllPriority()

void SDL_LogSetAllPriority | ( | SDL_LogPriority | priority | ) |

Set the priority of all log categories.

Definition at line 97 of file SDL_log.c.

References SDL_LogLevel::next, SDL_LogLevel::priority, SDL_application_priority, SDL_assert_priority, and SDL_default_priority.

{
SDL_LogLevel *entry;
for (entry = SDL_loglevels; entry; entry = entry->next) {
entry->priority = priority;
}
SDL_default_priority = priority;
SDL_assert_priority = priority;
SDL_application_priority = priority;
}
SDL_loglevels
static SDL_LogLevel * SDL_loglevels
Definition: SDL_log.c:55
SDL_LogLevel::priority
SDL_LogPriority priority
Definition: SDL_log.c:48
SDL_assert_priority
static SDL_LogPriority SDL_assert_priority
Definition: SDL_log.c:57
SDL_default_priority
static SDL_LogPriority SDL_default_priority
Definition: SDL_log.c:56
SDL_LogLevel::next
struct SDL_LogLevel * next
Definition: SDL_log.c:49
SDL_LogLevel
Definition: SDL_log.c:45
SDL_application_priority
static SDL_LogPriority SDL_application_priority
Definition: SDL_log.c:58

## SDL_LogSetOutputFunction()

void SDL_LogSetOutputFunction | ( | SDL_LogOutputFunction | callback,
|  | void * | userdata
| ) |  |

This function allows you to replace the default log output function with one of your own.

Definition at line 444 of file SDL_log.c.

References callback(), SDL_log_function, and SDL_log_userdata.

{
SDL_log_function = callback;
SDL_log_userdata = userdata;
}
SDL_log_function
static SDL_LogOutputFunction SDL_log_function
Definition: SDL_log.c:60
callback
static Uint32 callback(Uint32 interval, void *param)
Definition: testtimer.c:34
SDL_log_userdata
static void * SDL_log_userdata
Definition: SDL_log.c:61

## SDL_LogSetPriority()

void SDL_LogSetPriority | ( | int | category,
|  | SDL_LogPriority | priority
| ) |  |

Set the priority of a particular log category.

Definition at line 110 of file SDL_log.c.

References SDL_LogLevel::category, SDL_LogLevel::next, SDL_LogLevel::priority, SDL_loglevels, and SDL_malloc.

{
SDL_LogLevel *entry;
for (entry = SDL_loglevels; entry; entry = entry->next) {
if (entry->category == category) {
entry->priority = priority;
return;
}
}
/* Create a new entry */
entry = (SDL_LogLevel *)SDL_malloc(sizeof(*entry));
if (entry) {
entry->category = category;
entry->priority = priority;
entry->next = SDL_loglevels;
SDL_loglevels = entry;
}
}
SDL_loglevels
static SDL_LogLevel * SDL_loglevels
Definition: SDL_log.c:55
SDL_LogLevel::priority
SDL_LogPriority priority
Definition: SDL_log.c:48
SDL_LogLevel::category
int category
Definition: SDL_log.c:47
SDL_LogLevel::next
struct SDL_LogLevel * next
Definition: SDL_log.c:49
SDL_LogLevel
Definition: SDL_log.c:45
SDL_malloc
#define SDL_malloc
Definition: SDL_dynapi_overrides.h:374

## SDL_LogVerbose()

void SDL_LogVerbose | ( | int | category,
|  | SDL_PRINTF_FORMAT_STRING const char * | fmt,
|  |  | ...
| ) |  |

Log a message with SDL_LOG_PRIORITY_VERBOSE.

Definition at line 181 of file SDL_log.c.

References SDL_LOG_PRIORITY_VERBOSE, and SDL_LogMessageV().

{
va_list ap;
va_start(ap, fmt);
SDL_LogMessageV(category, SDL_LOG_PRIORITY_VERBOSE, fmt, ap);
va_end(ap);
}
SDL_LOG_PRIORITY_VERBOSE
Definition: SDL_log.h:104
SDL_LogMessageV
void SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list ap)
Log a message with the specified category and priority.
Definition: SDL_log.c:265

## SDL_LogWarn()

void SDL_LogWarn | ( | int | category,
|  | SDL_PRINTF_FORMAT_STRING const char * | fmt,
|  |  | ...
| ) |  |

Log a message with SDL_LOG_PRIORITY_WARN.

Definition at line 211 of file SDL_log.c.

References SDL_LOG_PRIORITY_WARN, and SDL_LogMessageV().

{
va_list ap;
va_start(ap, fmt);
SDL_LogMessageV(category, SDL_LOG_PRIORITY_WARN, fmt, ap);
va_end(ap);
}
SDL_LogMessageV
void SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list ap)
Log a message with the specified category and priority.
Definition: SDL_log.c:265
SDL_LOG_PRIORITY_WARN
Definition: SDL_log.h:107

## Variable Documentation

## SDL_application_priority

SDL_LogPriority SDL_application_priority = DEFAULT_APPLICATION_PRIORITY

static

Definition at line 58 of file SDL_log.c.

Referenced by SDL_LogGetPriority(), SDL_LogResetPriorities(), and SDL_LogSetAllPriority().

## SDL_assert_priority

SDL_LogPriority SDL_assert_priority = DEFAULT_ASSERT_PRIORITY

static

Definition at line 57 of file SDL_log.c.

Referenced by SDL_LogGetPriority(), SDL_LogResetPriorities(), and SDL_LogSetAllPriority().

## SDL_default_priority

SDL_LogPriority SDL_default_priority = DEFAULT_PRIORITY

static

Definition at line 56 of file SDL_log.c.

Referenced by SDL_LogGetPriority(), SDL_LogResetPriorities(), and SDL_LogSetAllPriority().

## SDL_log_function

SDL_LogOutputFunction SDL_log_function = SDL_LogOutput

static

Definition at line 60 of file SDL_log.c.

Referenced by SDL_LogGetOutputFunction(), SDL_LogMessageV(), and SDL_LogSetOutputFunction().

## SDL_log_userdata

void* SDL_log_userdata = NULL

static

Definition at line 61 of file SDL_log.c.

Referenced by SDL_LogGetOutputFunction(), SDL_LogMessageV(), and SDL_LogSetOutputFunction().

## SDL_loglevels

SDL_LogLevel* SDL_loglevels

static

Definition at line 55 of file SDL_log.c.

Referenced by SDL_LogResetPriorities(), and SDL_LogSetPriority().

## SDL_priority_prefixes

const char* SDL_priority_prefixes[SDL_NUM_LOG_PRIORITIES]

static

Initial value:
= {
NULL,
"VERBOSE",
"DEBUG",
"INFO",
"WARN",
"ERROR",
"CRITICAL"
}
NULL
#define NULL
Definition: begin_code.h:164

Definition at line 63 of file SDL_log.c.

Referenced by SDL_LogOutput().

## SDL_test_priority

SDL_LogPriority SDL_test_priority = DEFAULT_TEST_PRIORITY

static

Definition at line 59 of file SDL_log.c.

Referenced by SDL_LogGetPriority(), and SDL_LogResetPriorities().