Improved Log system
This commit is contained in:
parent
b0be0ba8b4
commit
84d437104d
@ -1,5 +1,6 @@
|
|||||||
package kernel;
|
package kernel;
|
||||||
|
|
||||||
|
import kernel.log.Log;
|
||||||
import kernel.turtle.Turtle;
|
import kernel.turtle.Turtle;
|
||||||
import haxe.MainLoop;
|
import haxe.MainLoop;
|
||||||
import kernel.net.Routing;
|
import kernel.net.Routing;
|
||||||
@ -12,6 +13,7 @@ import kernel.net.Net;
|
|||||||
class Init {
|
class Init {
|
||||||
public static function initKernel() {
|
public static function initKernel() {
|
||||||
// Init singeltons here because haxe is confused about the order to create them.
|
// Init singeltons here because haxe is confused about the order to create them.
|
||||||
|
Log.instance = new Log();
|
||||||
KernelEvents.instance = new KernelEvents();
|
KernelEvents.instance = new KernelEvents();
|
||||||
Peripheral.instance = new Peripheral();
|
Peripheral.instance = new Peripheral();
|
||||||
|
|
||||||
|
@ -1,40 +1,52 @@
|
|||||||
package kernel.log;
|
package kernel.log;
|
||||||
|
|
||||||
|
import haxe.ds.ReadOnlyArray;
|
||||||
#if webconsole
|
#if webconsole
|
||||||
import lib.Debug;
|
import lib.Debug;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
using tink.CoreApi;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Log messages to specified output.
|
Log messages to specified output.
|
||||||
**/
|
**/
|
||||||
class Log {
|
class Log {
|
||||||
|
public static var instance:Log;
|
||||||
|
|
||||||
private static inline final MAX_LINES:Int = 100;
|
private static inline final MAX_LINES:Int = 100;
|
||||||
|
|
||||||
private static final logLines:Array<LogLine> = [];
|
public final onLog:Signal<LogLine>;
|
||||||
|
|
||||||
|
private final onLogTrigger:SignalTrigger<LogLine> = new SignalTrigger();
|
||||||
|
private final logLines:Array<LogLine> = [];
|
||||||
|
|
||||||
|
public function new() {
|
||||||
|
onLog = onLogTrigger.asSignal();
|
||||||
|
}
|
||||||
|
|
||||||
public static function info(msg:Dynamic, ?pos:haxe.PosInfos) {
|
public static function info(msg:Dynamic, ?pos:haxe.PosInfos) {
|
||||||
log({level: Info, message: Std.string(msg),time: 0});
|
instance.log({level: Info, message: Std.string(msg),time: 0});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function warn(msg:Dynamic, ?pos:haxe.PosInfos) {
|
public static function warn(msg:Dynamic, ?pos:haxe.PosInfos) {
|
||||||
log({level: Warn, message: Std.string(msg),time: 0});
|
instance.log({level: Warn, message: Std.string(msg),time: 0});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function error(msg:Dynamic, ?pos:haxe.PosInfos) {
|
public static function error(msg:Dynamic, ?pos:haxe.PosInfos) {
|
||||||
log({level: Error, message: Std.string(msg),time: 0});
|
instance.log({level: Error, message: Std.string(msg),time: 0});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function debug(msg:Dynamic, ?pos:haxe.PosInfos) {
|
public static function debug(msg:Dynamic, ?pos:haxe.PosInfos) {
|
||||||
#if debug
|
#if debug
|
||||||
log({level: Debug, message: Std.string(msg),time: 0});
|
instance.log({level: Debug, message: Std.string(msg),time: 0});
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function silly(msg:Dynamic, ?pos:haxe.PosInfos) {
|
public static function silly(msg:Dynamic, ?pos:haxe.PosInfos) {
|
||||||
log({level: Silly, message: Std.string(msg),time: 0});
|
instance.log({level: Silly, message: Std.string(msg),time: 0});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function log(line: LogLine, ?pos:haxe.PosInfos) {
|
private function log(line: LogLine, ?pos:haxe.PosInfos) {
|
||||||
logLines.push(line);
|
logLines.push(line);
|
||||||
|
|
||||||
if (logLines.length > MAX_LINES) {
|
if (logLines.length > MAX_LINES) {
|
||||||
@ -44,5 +56,11 @@ class Log {
|
|||||||
#if webconsole
|
#if webconsole
|
||||||
Debug.printWeb('[${Std.string(line.level)}] ${line.message}');
|
Debug.printWeb('[${Std.string(line.level)}] ${line.message}');
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
onLogTrigger.trigger(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLines():ReadOnlyArray<LogLine> {
|
||||||
|
return logLines;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user