Merge pull request #208 from JupiterRider/master

Cleanup utils - especially logging
This commit is contained in:
Milan Nikolic 2022-11-11 15:45:26 +01:00 committed by GitHub
commit 93f4babf10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 57 additions and 154 deletions

View file

@ -131,3 +131,7 @@ func (a *asset) Close() error {
C.AAsset_close(a.ptr) C.AAsset_close(a.ptr)
return nil return nil
} }
func getInternalStoragePath() string {
return C.GoString(C.internal_storage_path)
}

View file

@ -1195,16 +1195,25 @@ func newRenderTexture2DFromPointer(ptr unsafe.Pointer) RenderTexture2D {
return *(*RenderTexture2D)(ptr) return *(*RenderTexture2D)(ptr)
} }
// Log message types type TraceLogLevel int
// Trace log level
// NOTE: Organized by priority level
const ( const (
LogAll = iota // Display all logs
LogAll TraceLogLevel = iota
// Trace logging, intended for internal use only
LogTrace LogTrace
// Debug logging, used for internal debugging, it should be disabled on release builds
LogDebug LogDebug
// Info logging, used for program execution info
LogInfo LogInfo
// Warning logging, used on recoverable failures
LogWarning LogWarning
// Error logging, used on unrecoverable failures
LogError LogError
// Fatal logging, used to abort program: exit(EXIT_FAILURE)
LogFatal LogFatal
// Disable logging
LogNone LogNone
) )
var logTypeFlags byte = LogInfo | LogWarning | LogError

View file

@ -1,49 +1,43 @@
//go:build !android && !windows //go:build !android
// +build !android,!windows // +build !android
package rl package rl
/* /*
#include "stdlib.h"
#include "raylib.h" #include "raylib.h"
void TraceLogWrapper(int logLevel, const char *text)
{
TraceLog(logLevel, text);
}
*/ */
import "C" import "C"
import ( import (
"fmt" "fmt"
"os" "os"
"unsafe"
) )
// SetTraceLog - Enable trace log message types // Set the current threshold (minimum) log level
func SetTraceLog(typeFlags byte) { func SetTraceLog(logLevel TraceLogLevel) {
logTypeFlags = typeFlags clogLevel := (C.int)(logLevel)
C.SetTraceLogLevel(clogLevel)
ctypeFlags := (C.int)(typeFlags)
C.SetTraceLogLevel(ctypeFlags)
} }
// TraceLog - Show trace log messages (INFO, WARNING, ERROR, DEBUG) // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)
func TraceLog(msgType int, text string, v ...interface{}) { func TraceLog(logLevel TraceLogLevel, text string, v ...interface{}) {
switch msgType { ctext := C.CString(fmt.Sprintf(text, v...))
case LogInfo: defer C.free(unsafe.Pointer(ctext))
if logTypeFlags&LogInfo != 0 { clogLevel := (C.int)(logLevel)
fmt.Printf("INFO: "+text+"\n", v...) C.TraceLogWrapper(clogLevel, ctext)
}
case LogWarning:
if logTypeFlags&LogWarning != 0 {
fmt.Printf("WARNING: "+text+"\n", v...)
}
case LogError:
if logTypeFlags&LogError != 0 {
fmt.Printf("ERROR: "+text+"\n", v...)
}
case LogDebug:
if logTypeFlags&LogDebug != 0 {
fmt.Printf("DEBUG: "+text+"\n", v...)
}
}
} }
// HomeDir - Returns user home directory // HomeDir - Returns user home directory
func HomeDir() string { // NOTE: On Android this returns internal data path and must be called after InitWindow
return os.Getenv("HOME") func HomeDir() string {
if homeDir, err := os.UserHomeDir(); err != nil {
return homeDir
}
return ""
} }

View file

@ -1,24 +0,0 @@
// +build android
#include "_cgo_export.h"
#include <android/log.h>
void log_info(const char *msg) {
__android_log_print(ANDROID_LOG_INFO, "raylib", "%s\n", msg);
}
void log_warn(const char *msg) {
__android_log_print(ANDROID_LOG_WARN, "raylib", "%s\n", msg);
}
void log_error(const char *msg) {
__android_log_print(ANDROID_LOG_ERROR, "raylib", "%s\n", msg);
}
void log_debug(const char *msg) {
__android_log_print(ANDROID_LOG_DEBUG, "raylib", "%s\n", msg);
}
const char* get_internal_storage_path() {
return internal_storage_path;
}

View file

@ -4,15 +4,12 @@
package rl package rl
/* /*
#include "stdlib.h"
#include "raylib.h" #include "raylib.h"
#include <stdlib.h> void TraceLogWrapper(int logLevel, const char *text)
{
void log_info(const char *msg); TraceLog(logLevel, text);
void log_warn(const char *msg); }
void log_error(const char *msg);
void log_debug(const char *msg);
extern char* get_internal_storage_path();
*/ */
import "C" import "C"
@ -21,46 +18,22 @@ import (
"unsafe" "unsafe"
) )
// SetTraceLog - Enable trace log message types (bit flags based) // Set the current threshold (minimum) log level
func SetTraceLog(typeFlags byte) { func SetTraceLog(logLevel TraceLogLevel) {
logTypeFlags = typeFlags clogLevel := (C.int)(logLevel)
C.SetTraceLogLevel(clogLevel)
ctypeFlags := (C.int)(typeFlags)
C.SetTraceLogLevel(ctypeFlags)
} }
// TraceLog - Trace log messages showing (INFO, WARNING, ERROR, DEBUG) // Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)
func TraceLog(msgType int, text string, v ...interface{}) { func TraceLog(logLevel TraceLogLevel, text string, v ...interface{}) {
switch msgType { ctext := C.CString(fmt.Sprintf(text, v...))
case LogInfo: defer C.free(unsafe.Pointer(ctext))
if logTypeFlags&LogInfo != 0 { clogLevel := (C.int)(logLevel)
msg := C.CString(fmt.Sprintf("INFO: "+text, v...)) C.TraceLogWrapper(clogLevel, ctext)
defer C.free(unsafe.Pointer(msg))
C.log_info(msg)
}
case LogWarning:
if logTypeFlags&LogWarning != 0 {
msg := C.CString(fmt.Sprintf("WARNING: "+text, v...))
defer C.free(unsafe.Pointer(msg))
C.log_warn(msg)
}
case LogError:
if logTypeFlags&LogError != 0 {
msg := C.CString(fmt.Sprintf("ERROR: "+text, v...))
defer C.free(unsafe.Pointer(msg))
C.log_error(msg)
}
case LogDebug:
if logTypeFlags&LogDebug != 0 {
msg := C.CString(fmt.Sprintf("DEBUG: "+text, v...))
defer C.free(unsafe.Pointer(msg))
C.log_debug(msg)
}
}
} }
// HomeDir - Returns user home directory // HomeDir - Returns user home directory
// NOTE: On Android this returns internal data path and must be called after InitWindow // NOTE: On Android this returns internal data path and must be called after InitWindow
func HomeDir() string { func HomeDir() string {
return C.GoString(C.get_internal_storage_path()) return getInternalStoragePath()
} }

View file

@ -1,53 +0,0 @@
//go:build windows
// +build windows
package rl
/*
#include "raylib.h"
*/
import "C"
import (
"fmt"
"os"
)
// SetTraceLog - Enable trace log message types (bit flags based)
func SetTraceLog(typeFlags byte) {
logTypeFlags = typeFlags
ctypeFlags := (C.int)(typeFlags)
C.SetTraceLogLevel(ctypeFlags)
}
// TraceLog - Show trace log messages (INFO, WARNING, ERROR, DEBUG)
func TraceLog(msgType int, text string, v ...interface{}) {
switch msgType {
case LogInfo:
if logTypeFlags&LogInfo != 0 {
fmt.Printf("INFO: "+text+"\n", v...)
}
case LogWarning:
if logTypeFlags&LogWarning != 0 {
fmt.Printf("WARNING: "+text+"\n", v...)
}
case LogError:
if logTypeFlags&LogError != 0 {
fmt.Printf("ERROR: "+text+"\n", v...)
}
case LogDebug:
if logTypeFlags&LogDebug != 0 {
fmt.Printf("DEBUG: "+text+"\n", v...)
}
}
}
// HomeDir - Returns user home directory
func HomeDir() string {
home := os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH")
if home == "" {
home = os.Getenv("USERPROFILE")
}
return home
}