]> git.lizzy.rs Git - shadowclad.git/blob - logger.c
Implement custom Asset3D structure and refactor to use it
[shadowclad.git] / logger.c
1 #include <stdarg.h>
2 #include <stdio.h>
3
4 #include "logger.h"
5
6 LogLevel logLevel = LOGLEVEL_DEBUG;
7
8
9
10 void logMessage(LogLevel msgLevel, const char* file, int line, const char* message, ...) {
11         if (msgLevel > logLevel) {
12                 return;
13         }
14         
15         const char* msgLevelString;
16         switch (msgLevel) {
17                 case LOGLEVEL_ERROR:
18                         msgLevelString = "error: ";
19                         break;
20                 case LOGLEVEL_WARNING:
21                         msgLevelString = "warning: ";
22                         break;
23                 case LOGLEVEL_INFO:
24                         msgLevelString = "";
25                         break;
26                 case LOGLEVEL_DEBUG:
27                         msgLevelString = "debug: ";
28                         break;
29                 default:
30                         msgLevelString = "(invalid message level!) ";
31                         break;
32         }
33         
34         va_list args;
35         va_start(args, message);
36         
37         fprintf(stderr, "%s:%i: %s", file, line, msgLevelString);
38         vfprintf(stderr, message, args);
39         fputc('\n', stderr);
40         
41         va_end(args);
42 }