Re-implementation of Izanami game engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.6 KiB

  1. #include "IZ_log.h"
  2. void IZ_LogError(const char* fmt, ...) {
  3. #ifdef IZ_LOG_LEVEL_FLAG_ERROR
  4. char buffer[4096];
  5. va_list args;
  6. va_start(args, fmt);
  7. vsnprintf(buffer, sizeof(buffer), fmt, args);
  8. va_end(args);
  9. #if IZ_LOG_DATE_FUNCTION == IZ_TimerElapsed
  10. fprintf(stderr, RED "%12s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  11. #elif IZ_LOG_DATE_FUNCTION == IZ_TimerNow
  12. fprintf(stderr, RED "%24s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  13. #endif
  14. #endif
  15. }
  16. void IZ_LogInfo(IZ_LogCategory category, const char* fmt, ...) {
  17. #ifdef IZ_LOG_LEVEL_FLAG_INFO
  18. char buffer[4096];
  19. va_list args;
  20. va_start(args, fmt);
  21. vsnprintf(buffer, sizeof(buffer), fmt, args);
  22. va_end(args);
  23. #if IZ_LOG_DATE_FUNCTION == IZ_TimerElapsed
  24. switch (category) {
  25. default:
  26. case IZ_LOG_CATEGORY_GENERIC:
  27. fprintf(stdout, CYN "%12s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  28. break;
  29. case IZ_LOG_CATEGORY_GLOBAL:
  30. fprintf(stdout, MAG "%12s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  31. break;
  32. case IZ_LOG_CATEGORY_INPUT:
  33. fprintf(stdout, GRN "%12s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  34. break;
  35. }
  36. #elif IZ_LOG_DATE_FUNCTION == IZ_TimerNow
  37. switch (category) {
  38. default:
  39. case IZ_LOG_CATEGORY_GENERIC:
  40. fprintf(stdout, CYN "%24s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  41. break;
  42. case IZ_LOG_CATEGORY_GLOBAL:
  43. fprintf(stdout, MAG "%24s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  44. break;
  45. case IZ_LOG_CATEGORY_INPUT:
  46. fprintf(stdout, GRN "%24s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  47. break;
  48. }
  49. #endif
  50. #endif
  51. }
  52. void IZ_LogWarn(bool is_critical, const char* fmt, ...) {
  53. #ifdef IZ_LOG_LEVEL_FLAG_WARN
  54. char buffer[4096];
  55. va_list args;
  56. va_start(args, fmt);
  57. vsnprintf(buffer, sizeof(buffer), fmt, args);
  58. va_end(args);
  59. #if IZ_LOG_DATE_FUNCTION == IZ_TimerElapsed
  60. if (is_critical) {
  61. fprintf(stdout, WHT "%12s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  62. } else {
  63. fprintf(stdout, YEL "%12s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  64. }
  65. #elif IZ_LOG_DATE_FUNCTION == IZ_TimerNow
  66. if (is_critical) {
  67. fprintf(stdout, WHT "%24s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  68. } else {
  69. fprintf(stdout, YEL "%24s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  70. }
  71. #endif
  72. #endif
  73. }
  74. void IZ_Log(const char* fmt, ...) {
  75. #ifdef IZ_LOG_LEVEL_FLAG_DEBUG
  76. char buffer[4096];
  77. va_list args;
  78. va_start(args, fmt);
  79. vsnprintf(buffer, sizeof(buffer), fmt, args);
  80. va_end(args);
  81. #if IZ_LOG_DATE_FUNCTION == IZ_TimerElapsed
  82. fprintf(stdout, BLU "%12s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  83. #elif IZ_LOG_DATE_FUNCTION == IZ_TimerNow
  84. fprintf(stdout, BLU "%24s" RESET " %s\n", IZ_LOG_DATE_FUNCTION(), buffer);
  85. #endif
  86. #endif
  87. }