mmmmh
This commit is contained in:
parent
82aee127b0
commit
a92b119549
99 changed files with 6922 additions and 5723 deletions
212
tracelog.c
Normal file
212
tracelog.c
Normal file
|
|
@ -0,0 +1,212 @@
|
|||
#include "tracelog.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "format.h"
|
||||
|
||||
#if COLLA_WIN
|
||||
#if COLLA_MSVC
|
||||
#pragma warning(disable:4996) // _CRT_SECURE_NO_WARNINGS.
|
||||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#if COLLA_CMT_LIB
|
||||
#pragma comment(lib, "User32")
|
||||
#endif
|
||||
|
||||
#if COLLA_TCC
|
||||
#include "tcc/colla_tcc.h"
|
||||
#endif
|
||||
|
||||
//#ifndef TLOG_NO_COLOURS
|
||||
// #define TLOG_NO_COLOURS
|
||||
//#endif
|
||||
#endif
|
||||
|
||||
#if COLLA_EMC
|
||||
#define TLOG_NO_COLOURS
|
||||
#endif
|
||||
|
||||
#if COLLA_EMC
|
||||
#define COLOUR_BLACK "<span class=\"black\">"
|
||||
#define COLOUR_RED "<span class=\"red\">"
|
||||
#define COLOUR_GREEN "<span class=\"green\">"
|
||||
#define COLOUR_YELLOW "<span class=\"yellow\">"
|
||||
#define COLOUR_BLUE "<span class=\"blue\">"
|
||||
#define COLOUR_MAGENTA "<span class=\"magenta\">"
|
||||
#define COLOUR_CYAN "<span class=\"cyan\">"
|
||||
#define COLOUR_WHITE "<span class=\"white\">"
|
||||
#define COLOUR_RESET "</span></b>"
|
||||
#define COLOUR_BOLD "<b>"
|
||||
#elif defined(TLOG_NO_COLOURS)
|
||||
#define COLOUR_BLACK ""
|
||||
#define COLOUR_RED ""
|
||||
#define COLOUR_GREEN ""
|
||||
#define COLOUR_YELLOW ""
|
||||
#define COLOUR_BLUE ""
|
||||
#define COLOUR_MAGENTA ""
|
||||
#define COLOUR_CYAN ""
|
||||
#define COLOUR_WHITE ""
|
||||
#define COLOUR_RESET ""
|
||||
#define COLOUR_BOLD ""
|
||||
#else
|
||||
#define COLOUR_BLACK "\033[30m"
|
||||
#define COLOUR_RED "\033[31m"
|
||||
#define COLOUR_GREEN "\033[32m"
|
||||
#define COLOUR_YELLOW "\033[33m"
|
||||
#define COLOUR_BLUE "\033[22;34m"
|
||||
#define COLOUR_MAGENTA "\033[35m"
|
||||
#define COLOUR_CYAN "\033[36m"
|
||||
#define COLOUR_WHITE "\033[37m"
|
||||
#define COLOUR_RESET "\033[0m"
|
||||
#define COLOUR_BOLD "\033[1m"
|
||||
#endif
|
||||
|
||||
static bool tl_use_newline = true;
|
||||
|
||||
#if COLLA_WIN
|
||||
static void setLevelColour(int level) {
|
||||
WORD attribute = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
|
||||
switch (level) {
|
||||
case LogDebug: attribute = FOREGROUND_BLUE; break;
|
||||
case LogInfo: attribute = FOREGROUND_GREEN; break;
|
||||
case LogWarning: attribute = FOREGROUND_RED | FOREGROUND_GREEN; break;
|
||||
case LogError: attribute = FOREGROUND_RED; break;
|
||||
case LogFatal: attribute = FOREGROUND_RED; break;
|
||||
}
|
||||
|
||||
HANDLE hc = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
SetConsoleTextAttribute(hc, attribute);
|
||||
}
|
||||
#else
|
||||
static void setLevelColour(int level) {
|
||||
switch (level) {
|
||||
case LogDebug: printf(COLOUR_BLUE); break;
|
||||
case LogInfo: printf(COLOUR_GREEN); break;
|
||||
case LogWarning: printf(COLOUR_YELLOW); break;
|
||||
case LogError: printf(COLOUR_RED); break;
|
||||
case LogFatal: printf(COLOUR_MAGENTA); break;
|
||||
default: printf(COLOUR_RESET); break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void traceLog(int level, const char *fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
traceLogVaList(level, fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
#ifdef TLOG_MUTEX
|
||||
#include "cthreads.h"
|
||||
static cmutex_t g_mtx = 0;
|
||||
#endif
|
||||
|
||||
void traceLogVaList(int level, const char *fmt, va_list args) {
|
||||
#ifdef TLOG_MUTEX
|
||||
if (!g_mtx) g_mtx = mtxInit();
|
||||
mtxLock(g_mtx);
|
||||
#endif
|
||||
|
||||
const char *beg = "";
|
||||
switch (level) {
|
||||
case LogAll: beg = "[ALL" ; break;
|
||||
case LogTrace: beg = "[TRACE" ; break;
|
||||
case LogDebug: beg = "[DEBUG" ; break;
|
||||
case LogInfo: beg = "[INFO" ; break;
|
||||
case LogWarning: beg = "[WARNING" ; break;
|
||||
case LogError: beg = "[ERROR" ; break;
|
||||
case LogFatal: beg = "[FATAL" ; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
#if COLLA_WIN
|
||||
SetConsoleOutputCP(CP_UTF8);
|
||||
#endif
|
||||
setLevelColour(level);
|
||||
printf("%s", beg);
|
||||
|
||||
#if GAME_CLIENT
|
||||
putchar(':');
|
||||
traceSetColour(COL_CYAN);
|
||||
printf("CLIENT");
|
||||
#elif GAME_HOST
|
||||
putchar(':');
|
||||
traceSetColour(COL_MAGENTA);
|
||||
printf("HOST");
|
||||
#endif
|
||||
|
||||
setLevelColour(level);
|
||||
printf("]: ");
|
||||
|
||||
// set back to white
|
||||
setLevelColour(LogTrace);
|
||||
fmtPrintv(fmt, args);
|
||||
|
||||
if(tl_use_newline) {
|
||||
#if COLLA_EMC
|
||||
puts("<br>");
|
||||
#else
|
||||
puts("");
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef TLOG_DONT_EXIT_ON_FATAL
|
||||
if (level == LogFatal) {
|
||||
|
||||
#ifndef TLOG_NO_MSGBOX
|
||||
|
||||
#if COLLA_WIN
|
||||
char errbuff[1024];
|
||||
fmtBufferv(errbuff, sizeof(errbuff), fmt, args);
|
||||
|
||||
char captionbuf[] =
|
||||
#if GAME_HOST
|
||||
"Fatal Host Error";
|
||||
#elif GAME_CLIENT
|
||||
"Fatal Client Error";
|
||||
#else
|
||||
"Fatal Error";
|
||||
#endif
|
||||
MessageBoxA(
|
||||
NULL,
|
||||
errbuff, captionbuf,
|
||||
MB_ICONERROR | MB_OK
|
||||
);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
fflush(stdout);
|
||||
abort();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef TLOG_MUTEX
|
||||
mtxUnlock(g_mtx);
|
||||
#endif
|
||||
}
|
||||
|
||||
void traceUseNewline(bool newline) {
|
||||
tl_use_newline = newline;
|
||||
}
|
||||
|
||||
void traceSetColour(colour_e colour) {
|
||||
#if COLLA_WIN
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), (WORD)colour);
|
||||
#else
|
||||
switch (colour) {
|
||||
case COL_RESET: printf(COLOUR_RESET); break;
|
||||
case COL_BLACK: printf(COLOUR_BLACK); break;
|
||||
case COL_BLUE: printf(COLOUR_BLUE); break;
|
||||
case COL_GREEN: printf(COLOUR_GREEN); break;
|
||||
case COL_CYAN: printf(COLOUR_CYAN); break;
|
||||
case COL_RED: printf(COLOUR_RED); break;
|
||||
case COL_MAGENTA: printf(COLOUR_MAGENTA); break;
|
||||
case COL_YELLOW: printf(COLOUR_YELLOW); break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue