From 4487aedee744f1032781210f858aa0e5c2047104 Mon Sep 17 00:00:00 2001 From: shmyga Date: Mon, 19 Mar 2018 17:38:43 +0300 Subject: [PATCH] [log] update --- haxelib.json | 2 +- src/main/haxework/log/BaseLogger.hx | 84 ++++++++++---------- src/main/haxework/log/JSLogger.hx | 33 ++++---- src/main/haxework/log/SocketLogger.hx | 58 +++++++------- src/main/haxework/log/TextFieldLogger.hx | 17 ++-- src/main/haxework/log/TraceLogger.hx | 13 ++-- src/main/haxework/provider/Provider.hx | 99 +++++++++++------------- 7 files changed, 153 insertions(+), 153 deletions(-) diff --git a/haxelib.json b/haxelib.json index 6743810..ee06b6f 100755 --- a/haxelib.json +++ b/haxelib.json @@ -4,7 +4,7 @@ "license": "BSD", "tags": ["flash", "openfl"], "description": "Framework.", - "version": "0.8.0", + "version": "0.8.1", "releasenote": "Update.", "contributors": ["shmyga"], "classPath": "src/main", diff --git a/src/main/haxework/log/BaseLogger.hx b/src/main/haxework/log/BaseLogger.hx index 7f0fa3c..79ce3d1 100755 --- a/src/main/haxework/log/BaseLogger.hx +++ b/src/main/haxework/log/BaseLogger.hx @@ -1,54 +1,58 @@ package haxework.log; -#if flash -import flash.events.ErrorEvent; -import flash.errors.Error; -#end import haxework.log.ILogger.LogLevel; +import haxe.CallStack; + + +class LoggerUtil { + + public static function printPos(pos:haxe.PosInfos):String { + return '${pos.fileName}:${pos.lineNumber}:'; + } + + public static function printStackItem(item:StackItem):String { + return switch item { + case StackItem.CFunction: 'CFunction'; + case StackItem.Module(m): m; + case StackItem.FilePos(s, file, line): '${file}:${line}'; + case StackItem.Method(classname, method): '${classname}::${method}}'; + case StackItem.LocalFunction(v): 'LocalFunction(${v})'; + } + } + + public static function printError(error:Dynamic):String { + return error == null ? '' : Std.string('${error}\n\t${CallStack.exceptionStack().map(printStackItem).join('\n\t')}'); + } +} + class BaseLogger implements ILogger { - public function new() {} + public function new() {} - public function log(level:LogLevel, tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { - write(buildString(level, tag, message, error), p); - } - - private function buildString(level:LogLevel, tag:String, message:String, ?error:Dynamic):String { - return "[" + level + "] " + tag + " - " + message + (error == null ? "" : " {" + error2strign(error) + "}"); - } - - public static function error2strign(error:Dynamic):String { - #if flash - return if (Std.is(error, Error)) { - var stack:String = error.getStackTrace(); - stack == null ? Std.string(error) : stack; - } else if (Std.is(error, ErrorEvent)) { - var event:ErrorEvent = cast(error, ErrorEvent); - event.type + " - " + event.text; - } else { - Std.string(error); + public function log(level:LogLevel, tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { + write(buildString(level, tag, message, error, p)); } - #else - return Std.string(error); - #end - } - private function write(text:String, ?p:haxe.PosInfos):Void {} + private function buildString(level:LogLevel, tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):String { + return '${Date.now()} | ${LoggerUtil.printPos(p)} [${level}] ${tag} - ${message}${LoggerUtil.printError(error)}'; + } - public function d(tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { - log(LogLevel.DEBUG, tag, message, error, p); - } + private function write(text:String):Void {} - public function i(tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { - log(LogLevel.INFO, tag, message, error, p); - } + public function d(tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { + log(LogLevel.DEBUG, tag, message, error, p); + } - public function w(tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { - log(LogLevel.WARNING, tag, message, error, p); - } + public function i(tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { + log(LogLevel.INFO, tag, message, error, p); + } - public function e(tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { - log(LogLevel.ERROR, tag, message, error, p); - } + public function w(tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { + log(LogLevel.WARNING, tag, message, error, p); + } + + public function e(tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { + log(LogLevel.ERROR, tag, message, error, p); + } } \ No newline at end of file diff --git a/src/main/haxework/log/JSLogger.hx b/src/main/haxework/log/JSLogger.hx index 1694327..9c8f02f 100755 --- a/src/main/haxework/log/JSLogger.hx +++ b/src/main/haxework/log/JSLogger.hx @@ -4,27 +4,26 @@ import haxework.log.ILogger.LogLevel; import flash.external.ExternalInterface; import haxework.log.BaseLogger; + class JSLogger extends BaseLogger { - private var available:Bool; + private var available:Bool; - public function new() { - super(); - available = ExternalInterface.available; - } - - override public function e(tag:String, message:String, error:Dynamic = null, p:haxe.PosInfos = null):Void { - if (available) { - var text:String = buildString(LogLevel.ERROR, tag, message, error); - var s:String = p.fileName + ":" + p.lineNumber + ": " + text + "\n"; - try {ExternalInterface.call("console.error", s);} catch (error:Dynamic) {available = false;} + public function new() { + super(); + available = ExternalInterface.available; } - } - override private function write(text:String, ?p:haxe.PosInfos):Void { - if (available) { - var s:String = p.fileName + ":" + p.lineNumber + ": " + text + "\n"; - try {ExternalInterface.call("console.log", s);} catch (error:Dynamic) {available = false;} + override public function e(tag:String, message:String, ?error:Dynamic, ?p:haxe.PosInfos):Void { + if (available) { + var text:String = buildString(LogLevel.ERROR, tag, message, error); + try {ExternalInterface.call("console.error", text);} catch (error:Dynamic) {available = false;} + } + } + + override private function write(text:String):Void { + if (available) { + try {ExternalInterface.call("console.log", text);} catch (error:Dynamic) {available = false;} + } } - } } \ No newline at end of file diff --git a/src/main/haxework/log/SocketLogger.hx b/src/main/haxework/log/SocketLogger.hx index 04b512d..9781f98 100755 --- a/src/main/haxework/log/SocketLogger.hx +++ b/src/main/haxework/log/SocketLogger.hx @@ -15,45 +15,47 @@ import sys.net.Host; import sys.net.Socket; #end + class SocketLogger extends BaseLogger { - private var socket:Socket; + private var socket:Socket; - public function new() { - super(); - socket = new Socket(); - #if flash - socket.addEventListener(IOErrorEvent.IO_ERROR, function(error):Void { - onError(error); - }); - socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(error):Void { - onError(error); - }); - socket.connect(CompilationOption.get("debug.address"), Std.parseInt(CompilationOption.get("debug.port"))); - #else + public function new() { + super(); + socket = new Socket(); + #if flash + socket.addEventListener(IOErrorEvent.IO_ERROR, function(error):Void { + onError(error); + }); + socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function(error):Void { + onError(error); + }); + socket.connect(CompilationOption.get("debug.address"), Std.parseInt(CompilationOption.get("debug.port"))); + #else try { socket.connect(new Host(CompilationOption.get("debug.address")), Std.parseInt(CompilationOption.get("debug.port"))); } catch (error: Dynamic) { onError(error); } #end - } + } - private function onError(error:Dynamic):Void { - //trace("SocketLogger", "", error); - } + private function onError(error:Dynamic):Void { + //trace("SocketLogger", "", error); + } - override private function write(text:String, ?p:haxe.PosInfos):Void { - try { - var s:String = p.fileName + ":" + p.lineNumber + ": " + text + "\n"; - #if flash - socket.writeUTFBytes(s); - socket.flush(); - #else - socket.write(s); - #end - } catch (error:Dynamic) {} - } + override private function write(text:String):Void { + try { + #if flash + socket.writeUTFBytes(text); + socket.writeUTFBytes('\n'); + socket.flush(); + #else + socket.write(text); + socket.write('\n'); + #end + } catch (error:Dynamic) {} + } } #end \ No newline at end of file diff --git a/src/main/haxework/log/TextFieldLogger.hx b/src/main/haxework/log/TextFieldLogger.hx index d34b7ed..c93731d 100644 --- a/src/main/haxework/log/TextFieldLogger.hx +++ b/src/main/haxework/log/TextFieldLogger.hx @@ -2,16 +2,17 @@ package haxework.log; import flash.text.TextField; + class TextFieldLogger extends BaseLogger { - private var textField:TextField; + private var textField:TextField; - public function new(textField:TextField) { - super(); - this.textField = textField; - } + public function new(textField:TextField) { + super(); + this.textField = textField; + } - override private function write(text:String, ?p:haxe.PosInfos):Void { - this.textField.text += ("\n" + text); - } + override private function write(text:String):Void { + this.textField.text += ("\n" + text); + } } \ No newline at end of file diff --git a/src/main/haxework/log/TraceLogger.hx b/src/main/haxework/log/TraceLogger.hx index af1916c..6f54acf 100755 --- a/src/main/haxework/log/TraceLogger.hx +++ b/src/main/haxework/log/TraceLogger.hx @@ -1,14 +1,13 @@ package haxework.log; -import haxework.log.ILogger.LogLevel; class TraceLogger extends BaseLogger { - public function new() { - super(); - } + public function new() { + super(); + } - override private function write(text:String, ?p:haxe.PosInfos):Void { - haxe.Log.trace(text, p); - } + override private function write(text:String):Void { + haxe.Log.trace(text); + } } \ No newline at end of file diff --git a/src/main/haxework/provider/Provider.hx b/src/main/haxework/provider/Provider.hx index fd71cc0..a617dda 100755 --- a/src/main/haxework/provider/Provider.hx +++ b/src/main/haxework/provider/Provider.hx @@ -1,61 +1,56 @@ package haxework.provider; + class Provider { - private static function key(i:Class, ?type:Dynamic):String { - var result = Type.getClassName(i); - if (type != null) result += ':${type}'; - return result; - } - - //private static var factories:Map> = new Map(); - private static var factories:Map> = cast [ - #if (!neko) - key(haxework.net.manage.LoaderManager) => haxework.net.manage.ILoaderManager - #end - ]; - - private static var args:Map> = new Map(); - private static var instances:Map = new Map(); - - public static function setFactory(i:Class, clazz:Class, ?type:Dynamic, ?args:Array):Void { - var key = key(i, type); - factories.set(key, clazz); - if (args != null) Provider.args.set(key, args); - } - - public static function set(i:Class, instance:T, ?type:Dynamic):Void { - var key = key(i, type); - instances.set(key, instance); - } - - public static function get(i:Class, ?type:Dynamic):T { - var key = key(i, type); - if (instances.exists(key)) { - return instances.get(key); - } else if (factories.exists(key)) { - var instance:T = Type.createInstance(factories.get(key), args.exists(key) ? args.get(key) : []); - instances.set(key, instance); - return instance; - } else { - throw 'Factory for "${key}" not found'; + private static function key(i:Class, ?type:Dynamic):String { + var result = Type.getClassName(i); + if (type != null) result += ':${Std.string(type)}'; + return result; } - } - public static function build(i:Class, ?type:Dynamic):T { - var key = key(i, type); - if (factories.exists(key)) { - var instance:T = Type.createInstance(factories.get(key), args.exists(key) ? args.get(key) : []); - return instance; - } else { - throw 'Factory for "${key}" not found'; - } - } + private static var factories:Map> = new Map(); + private static var args:Map> = new Map(); + private static var instances:Map = new Map(); - public static function setProperty(i:Class, field:String, value:Dynamic, ?type:Dynamic):Void { - var o:Dynamic = get(i, type); - if (o != null && Reflect.hasField(o, field)) { - Reflect.setProperty(o, field, value); + public static function setFactory(i:Class, clazz:Class, ?type:Dynamic, ?args:Array):Void { + var key = key(i, type); + factories.set(key, clazz); + if (args != null) Provider.args.set(key, args); + } + + public static function set(i:Class, instance:T, ?type:Dynamic):Void { + var key = key(i, type); + instances.set(key, instance); + } + + public static function get(i:Class, ?type:Dynamic):T { + var key = key(i, type); + if (instances.exists(key)) { + return instances.get(key); + } else if (factories.exists(key)) { + var instance:T = Type.createInstance(factories.get(key), args.exists(key) ? args.get(key) : []); + instances.set(key, instance); + return instance; + } else { + throw 'Factory for "${key}" not found'; + } + } + + public static function build(i:Class, ?type:Dynamic):T { + var key = key(i, type); + if (factories.exists(key)) { + var instance:T = Type.createInstance(factories.get(key), args.exists(key) ? args.get(key) : []); + return instance; + } else { + throw 'Factory for "${key}" not found'; + } + } + + public static function setProperty(i:Class, field:String, value:Dynamic, ?type:Dynamic):Void { + var o:Dynamic = get(i, type); + if (o != null && Reflect.hasField(o, field)) { + Reflect.setProperty(o, field, value); + } } - } } \ No newline at end of file