SDL  2.0
SDL_log.h File Reference
#include "SDL_stdinc.h"
#include "begin_code.h"
#include "close_code.h"
+ Include dependency graph for SDL_log.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define SDL_MAX_LOG_MESSAGE   4096
 The maximum size of a log message. More...
 

Typedefs

typedef void(* SDL_LogOutputFunction) (void *userdata, int category, SDL_LogPriority priority, const char *message)
 The prototype for the log output function. More...
 

Enumerations

enum  {
  SDL_LOG_CATEGORY_APPLICATION,
  SDL_LOG_CATEGORY_ERROR,
  SDL_LOG_CATEGORY_ASSERT,
  SDL_LOG_CATEGORY_SYSTEM,
  SDL_LOG_CATEGORY_AUDIO,
  SDL_LOG_CATEGORY_VIDEO,
  SDL_LOG_CATEGORY_RENDER,
  SDL_LOG_CATEGORY_INPUT,
  SDL_LOG_CATEGORY_TEST,
  SDL_LOG_CATEGORY_RESERVED1,
  SDL_LOG_CATEGORY_RESERVED2,
  SDL_LOG_CATEGORY_RESERVED3,
  SDL_LOG_CATEGORY_RESERVED4,
  SDL_LOG_CATEGORY_RESERVED5,
  SDL_LOG_CATEGORY_RESERVED6,
  SDL_LOG_CATEGORY_RESERVED7,
  SDL_LOG_CATEGORY_RESERVED8,
  SDL_LOG_CATEGORY_RESERVED9,
  SDL_LOG_CATEGORY_RESERVED10,
  SDL_LOG_CATEGORY_CUSTOM
}
 The predefined log categories. More...
 
enum  SDL_LogPriority {
  SDL_LOG_PRIORITY_VERBOSE = 1,
  SDL_LOG_PRIORITY_DEBUG,
  SDL_LOG_PRIORITY_INFO,
  SDL_LOG_PRIORITY_WARN,
  SDL_LOG_PRIORITY_ERROR,
  SDL_LOG_PRIORITY_CRITICAL,
  SDL_NUM_LOG_PRIORITIES
}
 The predefined log priorities. More...
 

Functions

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,...) SDL_PRINTF_VARARG_FUNC(1)
 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,...) SDL_PRINTF_VARARG_FUNC(2)
 Log a message with SDL_LOG_PRIORITY_VERBOSE. More...
 
void SDL_LogDebug (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(2)
 Log a message with SDL_LOG_PRIORITY_DEBUG. More...
 
void SDL_LogInfo (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(2)
 Log a message with SDL_LOG_PRIORITY_INFO. More...
 
void SDL_LogWarn (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(2)
 Log a message with SDL_LOG_PRIORITY_WARN. More...
 
void SDL_LogError (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(2)
 Log a message with SDL_LOG_PRIORITY_ERROR. More...
 
void SDL_LogCritical (int category, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(2)
 Log a message with SDL_LOG_PRIORITY_CRITICAL. More...
 
void SDL_LogMessage (int category, SDL_LogPriority priority, SDL_PRINTF_FORMAT_STRING const char *fmt,...) SDL_PRINTF_VARARG_FUNC(3)
 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...
 

Detailed Description

Simple log messages with categories and priorities.

By default logs are quiet, but if you're debugging SDL you might want:

SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);

Here's where the messages go on different platforms: Windows: debug output stream Android: log output Others: standard error output (stderr)

Definition in file SDL_log.h.

Macro Definition Documentation

◆ SDL_MAX_LOG_MESSAGE

#define SDL_MAX_LOG_MESSAGE   4096

The maximum size of a log message.

Messages longer than the maximum size will be truncated

Definition at line 54 of file SDL_log.h.

Typedef Documentation

◆ SDL_LogOutputFunction

typedef void( * SDL_LogOutputFunction) (void *userdata, int category, SDL_LogPriority priority, const char *message)

The prototype for the log output function.

Definition at line 189 of file SDL_log.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

The predefined log categories.

By default the application category is enabled at the INFO level, the assert category is enabled at the WARN level, test is enabled at the VERBOSE level and all other categories are enabled at the CRITICAL level.

Enumerator
SDL_LOG_CATEGORY_APPLICATION 
SDL_LOG_CATEGORY_ERROR 
SDL_LOG_CATEGORY_ASSERT 
SDL_LOG_CATEGORY_SYSTEM 
SDL_LOG_CATEGORY_AUDIO 
SDL_LOG_CATEGORY_VIDEO 
SDL_LOG_CATEGORY_RENDER 
SDL_LOG_CATEGORY_INPUT 
SDL_LOG_CATEGORY_TEST 
SDL_LOG_CATEGORY_RESERVED1 
SDL_LOG_CATEGORY_RESERVED2 
SDL_LOG_CATEGORY_RESERVED3 
SDL_LOG_CATEGORY_RESERVED4 
SDL_LOG_CATEGORY_RESERVED5 
SDL_LOG_CATEGORY_RESERVED6 
SDL_LOG_CATEGORY_RESERVED7 
SDL_LOG_CATEGORY_RESERVED8 
SDL_LOG_CATEGORY_RESERVED9 
SDL_LOG_CATEGORY_RESERVED10 
SDL_LOG_CATEGORY_CUSTOM 

Definition at line 64 of file SDL_log.h.

65 {
75 
76  /* Reserved for future SDL library use */
87 
88  /* Beyond this point is reserved for application use, e.g.
89  enum {
90  MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM,
91  MYAPP_CATEGORY_AWESOME2,
92  MYAPP_CATEGORY_AWESOME3,
93  ...
94  };
95  */
97 };

◆ SDL_LogPriority

The predefined log priorities.

Enumerator
SDL_LOG_PRIORITY_VERBOSE 
SDL_LOG_PRIORITY_DEBUG 
SDL_LOG_PRIORITY_INFO 
SDL_LOG_PRIORITY_WARN 
SDL_LOG_PRIORITY_ERROR 
SDL_LOG_PRIORITY_CRITICAL 
SDL_NUM_LOG_PRIORITIES 

Definition at line 102 of file SDL_log.h.

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.

172 {
173  va_list ap;
174 
175  va_start(ap, fmt);
177  va_end(ap);
178 }

References SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, and SDL_LogMessageV().

◆ 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.

232 {
233  va_list ap;
234 
235  va_start(ap, fmt);
236  SDL_LogMessageV(category, SDL_LOG_PRIORITY_CRITICAL, fmt, ap);
237  va_end(ap);
238 }

References SDL_LogLevel::category, SDL_LOG_PRIORITY_CRITICAL, and SDL_LogMessageV().

◆ 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.

192 {
193  va_list ap;
194 
195  va_start(ap, fmt);
196  SDL_LogMessageV(category, SDL_LOG_PRIORITY_DEBUG, fmt, ap);
197  va_end(ap);
198 }

References SDL_LogLevel::category, SDL_LOG_PRIORITY_DEBUG, and SDL_LogMessageV().

◆ 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.

222 {
223  va_list ap;
224 
225  va_start(ap, fmt);
226  SDL_LogMessageV(category, SDL_LOG_PRIORITY_ERROR, fmt, ap);
227  va_end(ap);
228 }

References SDL_LogLevel::category, SDL_LOG_PRIORITY_ERROR, and SDL_LogMessageV().

◆ SDL_LogGetOutputFunction()

void SDL_LogGetOutputFunction ( SDL_LogOutputFunction callback,
void **  userdata 
)

Get the current log output function.

Definition at line 435 of file SDL_log.c.

436 {
437  if (callback) {
439  }
440  if (userdata) {
441  *userdata = SDL_log_userdata;
442  }
443 }

References callback(), SDL_log_function, and SDL_log_userdata.

◆ 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.

133 {
134  SDL_LogLevel *entry;
135 
136  for (entry = SDL_loglevels; entry; entry = entry->next) {
137  if (entry->category == category) {
138  return entry->priority;
139  }
140  }
141 
142  if (category == SDL_LOG_CATEGORY_TEST) {
143  return SDL_test_priority;
144  } else if (category == SDL_LOG_CATEGORY_APPLICATION) {
146  } else if (category == SDL_LOG_CATEGORY_ASSERT) {
147  return SDL_assert_priority;
148  } else {
149  return SDL_default_priority;
150  }
151 }

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, SDL_loglevels, and SDL_test_priority.

Referenced by SDL_LogMessageV().

◆ 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.

202 {
203  va_list ap;
204 
205  va_start(ap, fmt);
206  SDL_LogMessageV(category, SDL_LOG_PRIORITY_INFO, fmt, ap);
207  va_end(ap);
208 }

References SDL_LogLevel::category, SDL_LOG_PRIORITY_INFO, and SDL_LogMessageV().

◆ 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.

242 {
243  va_list ap;
244 
245  va_start(ap, fmt);
246  SDL_LogMessageV(category, priority, fmt, ap);
247  va_end(ap);
248 }

References SDL_LogLevel::category, SDL_LogLevel::priority, and SDL_LogMessageV().

◆ 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.

266 {
267  char *message;
268  size_t len;
269 
270  /* Nothing to do if we don't have an output function */
271  if (!SDL_log_function) {
272  return;
273  }
274 
275  /* Make sure we don't exceed array bounds */
276  if ((int)priority < 0 || priority >= SDL_NUM_LOG_PRIORITIES) {
277  return;
278  }
279 
280  /* See if we want to do anything with this message */
281  if (priority < SDL_LogGetPriority(category)) {
282  return;
283  }
284 
285  /* !!! FIXME: why not just "char message[SDL_MAX_LOG_MESSAGE];" ? */
287  if (!message) {
288  return;
289  }
290 
292 
293  /* Chop off final endline. */
295  if ((len > 0) && (message[len-1] == '\n')) {
296  message[--len] = '\0';
297  if ((len > 0) && (message[len-1] == '\r')) { /* catch "\r\n", too. */
298  message[--len] = '\0';
299  }
300  }
301 
302  SDL_log_function(SDL_log_userdata, category, priority, message);
304 }

References SDL_LogLevel::category, SDL_LogLevel::priority, SDL_log_function, SDL_log_userdata, SDL_LogGetPriority(), SDL_MAX_LOG_MESSAGE, SDL_NUM_LOG_PRIORITIES, SDL_stack_alloc, SDL_stack_free, SDL_strlen, and SDL_vsnprintf.

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

◆ SDL_LogResetPriorities()

void SDL_LogResetPriorities ( void  )

◆ SDL_LogSetAllPriority()

void SDL_LogSetAllPriority ( SDL_LogPriority  priority)

Set the priority of all log categories.

Definition at line 97 of file SDL_log.c.

98 {
99  SDL_LogLevel *entry;
100 
101  for (entry = SDL_loglevels; entry; entry = entry->next) {
102  entry->priority = priority;
103  }
104  SDL_default_priority = priority;
105  SDL_assert_priority = priority;
106  SDL_application_priority = priority;
107 }

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

◆ 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 446 of file SDL_log.c.

447 {
449  SDL_log_userdata = userdata;
450 }

References callback(), SDL_log_function, and SDL_log_userdata.

◆ 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.

111 {
112  SDL_LogLevel *entry;
113 
114  for (entry = SDL_loglevels; entry; entry = entry->next) {
115  if (entry->category == category) {
116  entry->priority = priority;
117  return;
118  }
119  }
120 
121  /* Create a new entry */
122  entry = (SDL_LogLevel *)SDL_malloc(sizeof(*entry));
123  if (entry) {
124  entry->category = category;
125  entry->priority = priority;
126  entry->next = SDL_loglevels;
127  SDL_loglevels = entry;
128  }
129 }

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

◆ 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.

182 {
183  va_list ap;
184 
185  va_start(ap, fmt);
186  SDL_LogMessageV(category, SDL_LOG_PRIORITY_VERBOSE, fmt, ap);
187  va_end(ap);
188 }

References SDL_LogLevel::category, SDL_LOG_PRIORITY_VERBOSE, and SDL_LogMessageV().

◆ 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.

212 {
213  va_list ap;
214 
215  va_start(ap, fmt);
216  SDL_LogMessageV(category, SDL_LOG_PRIORITY_WARN, fmt, ap);
217  va_end(ap);
218 }

References SDL_LogLevel::category, SDL_LOG_PRIORITY_WARN, and SDL_LogMessageV().

SDL_LOG_CATEGORY_RESERVED6
Definition: SDL_log.h:82
SDL_LOG_CATEGORY_RESERVED10
Definition: SDL_log.h:86
SDL_LOG_CATEGORY_RESERVED9
Definition: SDL_log.h:85
SDL_LOG_PRIORITY_CRITICAL
Definition: SDL_log.h:109
SDL_LOG_CATEGORY_RESERVED4
Definition: SDL_log.h:80
DEFAULT_APPLICATION_PRIORITY
#define DEFAULT_APPLICATION_PRIORITY
Definition: SDL_log.c:42
SDL_LOG_CATEGORY_APPLICATION
Definition: SDL_log.h:66
DEFAULT_ASSERT_PRIORITY
#define DEFAULT_ASSERT_PRIORITY
Definition: SDL_log.c:41
message
GLuint GLsizei const GLchar * message
Definition: SDL_opengl_glext.h:2483
SDL_LogGetPriority
SDL_LogPriority SDL_LogGetPriority(int category)
Get the priority of a particular log category.
Definition: SDL_log.c:132
SDL_application_priority
static SDL_LogPriority SDL_application_priority
Definition: SDL_log.c:58
SDL_LogLevel::priority
SDL_LogPriority priority
Definition: SDL_log.c:48
SDL_LOG_CATEGORY_ASSERT
Definition: SDL_log.h:68
DEFAULT_PRIORITY
#define DEFAULT_PRIORITY
Definition: SDL_log.c:40
SDL_LOG_CATEGORY_INPUT
Definition: SDL_log.h:73
SDL_LOG_CATEGORY_AUDIO
Definition: SDL_log.h:70
callback
static Uint32 callback(Uint32 interval, void *param)
Definition: testtimer.c:34
SDL_LOG_PRIORITY_DEBUG
Definition: SDL_log.h:105
SDL_LOG_CATEGORY_SYSTEM
Definition: SDL_log.h:69
SDL_LOG_PRIORITY_WARN
Definition: SDL_log.h:107
SDL_LOG_CATEGORY_TEST
Definition: SDL_log.h:74
SDL_LOG_CATEGORY_RESERVED7
Definition: SDL_log.h:83
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_stack_alloc
#define SDL_stack_alloc(type, count)
Definition: SDL_stdinc.h:354
SDL_NUM_LOG_PRIORITIES
Definition: SDL_log.h:110
len
GLenum GLsizei len
Definition: SDL_opengl_glext.h:2926
SDL_LogLevel::next
struct SDL_LogLevel * next
Definition: SDL_log.c:49
DEFAULT_TEST_PRIORITY
#define DEFAULT_TEST_PRIORITY
Definition: SDL_log.c:43
SDL_LOG_CATEGORY_RESERVED2
Definition: SDL_log.h:78
SDL_LogLevel
Definition: SDL_log.c:45
SDL_free
#define SDL_free
Definition: SDL_dynapi_overrides.h:377
SDL_LOG_CATEGORY_ERROR
Definition: SDL_log.h:67
SDL_LOG_CATEGORY_RESERVED5
Definition: SDL_log.h:81
SDL_vsnprintf
#define SDL_vsnprintf
Definition: SDL_dynapi_overrides.h:421
SDL_LOG_CATEGORY_VIDEO
Definition: SDL_log.h:71
SDL_LOG_PRIORITY_ERROR
Definition: SDL_log.h:108
SDL_assert_priority
static SDL_LogPriority SDL_assert_priority
Definition: SDL_log.c:57
SDL_LOG_CATEGORY_CUSTOM
Definition: SDL_log.h:96
SDL_loglevels
static SDL_LogLevel * SDL_loglevels
Definition: SDL_log.c:55
SDL_LOG_CATEGORY_RENDER
Definition: SDL_log.h:72
SDL_LOG_CATEGORY_RESERVED8
Definition: SDL_log.h:84
SDL_default_priority
static SDL_LogPriority SDL_default_priority
Definition: SDL_log.c:56
SDL_LOG_PRIORITY_INFO
Definition: SDL_log.h:106
SDL_stack_free
#define SDL_stack_free(data)
Definition: SDL_stdinc.h:355
SDL_log_userdata
static void * SDL_log_userdata
Definition: SDL_log.c:61
SDL_LOG_CATEGORY_RESERVED3
Definition: SDL_log.h:79
SDL_LOG_PRIORITY_VERBOSE
Definition: SDL_log.h:104
SDL_log_function
static SDL_LogOutputFunction SDL_log_function
Definition: SDL_log.c:60
SDL_LogLevel::category
int category
Definition: SDL_log.c:47
SDL_strlen
#define SDL_strlen
Definition: SDL_dynapi_overrides.h:393
SDL_malloc
#define SDL_malloc
Definition: SDL_dynapi_overrides.h:374
SDL_test_priority
static SDL_LogPriority SDL_test_priority
Definition: SDL_log.c:59
SDL_MAX_LOG_MESSAGE
#define SDL_MAX_LOG_MESSAGE
The maximum size of a log message.
Definition: SDL_log.h:54
SDL_LOG_CATEGORY_RESERVED1
Definition: SDL_log.h:77
SDL_LogPriority
SDL_LogPriority
The predefined log priorities.
Definition: SDL_log.h:102