/******************************************************************************************* * * raylib [core] example - Custom logging * * This example has been created using raylib 2.1 (www.raylib.com) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * * Example contributed by Pablo Marcos Oltra (@pamarcos) and reviewed by Ramon Santamaria (@raysan5) * * Copyright (c) 2018 Pablo Marcos Oltra (@pamarcos) and Ramon Santamaria (@raysan5) * ********************************************************************************************/ #include "raylib.h" #include // Required for: fopen(), fclose(), fputc(), fwrite(), printf(), fprintf(), funopen() #include // Required for: time_t, tm, time(), localtime(), strftime() #if defined(PLATFORM_WEB) #include #endif // Custom logging function void LogCustom(int msgType, const char *text, va_list args) { char timeStr[64]; time_t now = time(NULL); struct tm *tm_info = localtime(&now); strftime(timeStr, sizeof(timeStr), "%Y-%m-%d %H:%M:%S", tm_info); printf("[%s] ", timeStr); switch (msgType) { case LOG_INFO: printf("[INFO] : "); break; case LOG_ERROR: printf("[ERROR]: "); break; case LOG_WARNING: printf("[WARN] : "); break; case LOG_DEBUG: printf("[DEBUG]: "); break; default: break; } vprintf(text, args); printf("\n"); } //---------------------------------------------------------------------------------- // Global Variables Definition //---------------------------------------------------------------------------------- const int screenWidth = 800; const int screenHeight = 450; // NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) //---------------------------------------------------------------------------------- // Module Functions Declaration //---------------------------------------------------------------------------------- void UpdateDrawFrame(void); // Update and Draw one frame //---------------------------------------------------------------------------------- // Program Main Entry Point //---------------------------------------------------------------------------------- int main(void) { // Initialization //-------------------------------------------------------------------------------------- // First thing we do is setting our custom logger to ensure everything raylib logs // will use our own logger instead of its internal one SetTraceLogCallback(LogCustom); InitWindow(screenWidth, screenHeight, "raylib [core] example - custom logging"); #if defined(PLATFORM_WEB) emscripten_set_main_loop(UpdateDrawFrame, 0, 1); #else SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- // Main game loop while (!WindowShouldClose()) // Detect window close button or ESC key { UpdateDrawFrame(); } #endif // De-Initialization //-------------------------------------------------------------------------------------- CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- return 0; } //---------------------------------------------------------------------------------- // Module Functions Definition //---------------------------------------------------------------------------------- void UpdateDrawFrame(void) { // Update //---------------------------------------------------------------------------------- // TODO: Update your variables here //---------------------------------------------------------------------------------- // Draw //---------------------------------------------------------------------------------- BeginDrawing(); ClearBackground(RAYWHITE); DrawText("Check out the console output to see the custom logger in action!", 60, 200, 20, LIGHTGRAY); EndDrawing(); //---------------------------------------------------------------------------------- }