From 0affb5e7416a4f1e49e0033366b6a257da3dca3c Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Wed, 22 Dec 2021 00:43:48 +0100 Subject: [PATCH] [DEV] continue integration new model of log. --- lutin_io-scenarium-logger.py | 44 ++++++++ src/io/scenarium/logger/Logger.java | 77 ++++++++++++-- src/io/scenarium/logger/LoggerLocal.java | 130 +++++++++++++++++++++++ 3 files changed, 243 insertions(+), 8 deletions(-) create mode 100644 lutin_io-scenarium-logger.py create mode 100644 src/io/scenarium/logger/LoggerLocal.java diff --git a/lutin_io-scenarium-logger.py b/lutin_io-scenarium-logger.py new file mode 100644 index 0000000..1dcc092 --- /dev/null +++ b/lutin_io-scenarium-logger.py @@ -0,0 +1,44 @@ +#!/usr/bin/python +import realog.debug as debug +import lutin.tools as tools +import realog.debug as debug +import lutin.image as image +import os +import lutin.multiprocess as lutinMultiprocess + + +def get_type(): + return "LIBRARY_DYNAMIC" + +def get_desc(): + return "Scenarium logger" + +def get_licence(): + return "MPL-2" + +def get_compagny_type(): + return "com" + +def get_compagny_name(): + return "scenarium" + +#def get_maintainer(): +# return "authors.txt" + +#def get_version(): +# return "version.txt" + +def configure(target, my_module): + + my_module.add_src_file([ + 'src/module-info.java', + 'src/io/scenarium/logger/LogLevel.java', + 'src/io/scenarium/logger/Logger.java', + 'src/io/scenarium/logger/internal/Log.java', + ]) + my_module.add_path('src/', type='java') + + my_module.add_flag('java', "RELEASE_15_PREVIEW"); + + return True + diff --git a/src/io/scenarium/logger/Logger.java b/src/io/scenarium/logger/Logger.java index 7386164..df5d857 100644 --- a/src/io/scenarium/logger/Logger.java +++ b/src/io/scenarium/logger/Logger.java @@ -99,17 +99,46 @@ public class Logger { } private static String addGeneric(final String level, final String libName) { - String out = level; - out += Logger.printElement("", "", Logger.haveLibName, libName, Logger.sizeLibName); - out += Logger.printElement(" | ", "", Logger.haveThreadId, Long.toString(Thread.currentThread().getId()), Logger.sizeThreadId); - out += Logger.printElement(" | ", "", Logger.haveThreadName, Thread.currentThread().getName(), Logger.sizeThreadName); + StringBuilder out = new StringBuilder().append(level); + out.append(Logger.printElement("", "", Logger.haveLibName, libName, Logger.sizeLibName)); + out.append(Logger.printElement(" | ", "", Logger.haveThreadId, Long.toString(Thread.currentThread().getId()), Logger.sizeThreadId)); + out.append(Logger.printElement(" | ", "", Logger.haveThreadName, Thread.currentThread().getName(), Logger.sizeThreadName)); if (Logger.haveClassName || Logger.haveFileName || Logger.haveLineNumber) { final StackTraceElement callElem = Logger.getCallerElement(); - out += Logger.printElementLeft(" | l=", "", Logger.haveLineNumber, Long.toString(callElem.getLineNumber()), Logger.sizeLineNumber); - out += Logger.printElement(" | ", "", Logger.haveClassName, callElem.getClassName(), Logger.sizeClassName); - out += Logger.printElement(" | ", "", Logger.haveFileName, callElem.getFileName(), Logger.sizeFileName); + out.append(Logger.printElementLeft(" | l=", "", Logger.haveLineNumber, Long.toString(callElem.getLineNumber()), Logger.sizeLineNumber)); + out.append(Logger.printElement(" | ", "", Logger.haveClassName, callElem.getClassName(), Logger.sizeClassName)); + out.append(Logger.printElement(" | ", "", Logger.haveFileName, callElem.getFileName(), Logger.sizeFileName)); } - return out; + return out.toString(); + } + + /** + * Replace all the values {} with the associated value in the parameters + * @param data A generic string composed with "{}" element that will be replace. + * @param values List of all element to add in the string. + * @return a string with all the transformed data. + */ + public static String concatenate(final String data, Object... values) { + String[] cliped = data.split("{}"); + StringBuilder out = new StringBuilder(); + int nbElement = Math.max(values.length, cliped.length); + for (int iii = 0; iii < nbElement; iii++) { + if (iii < cliped.length) { + out.append(cliped[iii]); + } else { + out.append(" ?? "); + } + if (iii < values.length) { + if (values[iii] == null) { + out.append("null"); + } else { + out.append(values[iii].toString()); + } + } else { + out.append("{}"); + } + } + return out.toString(); } public static void critical(final String libName, final String data) { @@ -133,6 +162,10 @@ public class Logger { System.exit(-50); } + public static void critical(final String libName, final String data, Object... values) { + critical(libName, concatenate(data, values)); + } + public static void debug(final String libName, final String data) { if (Logger.haveColor) { System.out.print(Logger.BASH_COLOR_YELLOW); @@ -143,6 +176,10 @@ public class Logger { } } + public static void debug(final String libName, final String data, Object... values) { + debug(libName, concatenate(data, values)); + } + public static void displayBackTrace(final String libNameDraw) { StackTraceElement[] list = Thread.currentThread().getStackTrace(); Logger.error(libNameDraw, "Display Stacktrace :"); @@ -162,6 +199,10 @@ public class Logger { } } + public static void error(final String libName, final String data, Object... values) { + error(libName, concatenate(data, values)); + } + private static StackTraceElement getCallerElement() { if (Thread.currentThread().getStackTrace().length > 5) { return Thread.currentThread().getStackTrace()[5]; @@ -207,6 +248,10 @@ public class Logger { } } + public static void info(final String libName, final String data, Object... values) { + info(libName, concatenate(data, values)); + } + /** Initialize the library with generic argument in command line * @param args list of argument that are filtered after */ public static void init(final List args) { @@ -269,6 +314,10 @@ public class Logger { System.out.flush(); } + public static void print(final String libName, final String data, Object... values) { + print(libName, concatenate(data, values)); + } + private static String printElement(final String separator, final String separatorEnd, final boolean isActive, String data, final WrapInt size) { if (!isActive) { return ""; @@ -313,6 +362,10 @@ public class Logger { } } + public static void todo(final String libName, final String data, Object... values) { + todo(libName, concatenate(data, values)); + } + public static void usage() { Log.print(" [log]: Log session interface"); Log.print(" --log-level= Change the default log level (set all Log level):"); @@ -344,6 +397,10 @@ public class Logger { } } + public static void verbose(final String libName, final String data, Object... values) { + verbose(libName, concatenate(data, values)); + } + public static void warning(final String libName, final String data) { if (Logger.haveColor) { System.out.print(Logger.BASH_COLOR_MAGENTA); @@ -354,5 +411,9 @@ public class Logger { } } + public static void warning(final String libName, final String data, Object... values) { + warning(libName, concatenate(data, values)); + } + private Logger() {} } diff --git a/src/io/scenarium/logger/LoggerLocal.java b/src/io/scenarium/logger/LoggerLocal.java new file mode 100644 index 0000000..88587a2 --- /dev/null +++ b/src/io/scenarium/logger/LoggerLocal.java @@ -0,0 +1,130 @@ +package io.scenarium.logger; + +public class LoggerLocal { + private final String className; + private final String libraryName; + private final String libraryNameDraw; + private final boolean force; + private final boolean printCritical; + private final boolean printDebug; + private final boolean printError; + private final boolean printInfo; + private final boolean printPrint; + private final boolean printTodo; + private final boolean printVerbose; + private final boolean printWarning; + + public LoggerLocal(String libraryName, final Class clazz) { + this(libraryName, clazz, false); + } + + public LoggerLocal(String libraryName, final Class clazz, boolean force) { + this.force = force; + this.libraryName = libraryName; + this.className = clazz.getCanonicalName(); + this.libraryNameDraw = Logger.getDrawableName(this.libraryName); + this.printCritical = Logger.getNeedPrint(this.libraryName, LogLevel.CRITICAL); + this.printDebug = Logger.getNeedPrint(this.libraryName, LogLevel.DEBUG); + this.printError = Logger.getNeedPrint(this.libraryName, LogLevel.ERROR); + this.printInfo = Logger.getNeedPrint(this.libraryName, LogLevel.INFO); + this.printPrint = Logger.getNeedPrint(this.libraryName, LogLevel.PRINT); + this.printTodo = Logger.getNeedPrint(this.libraryName, LogLevel.TODO); + this.printVerbose = Logger.getNeedPrint(this.libraryName, LogLevel.VERBOSE); + this.printWarning = Logger.getNeedPrint(this.libraryName, LogLevel.WARNING); + } + + public void critical(final String data) { + if (this.printCritical || this.force) { + Logger.critical(this.libraryNameDraw, data); + } + } + + public void critical(final String data, Object... values) { + if (this.printCritical || this.force) { + Logger.critical(this.libraryNameDraw, data, values); + } + } + + public void debug(final String data) { + if (this.printDebug || this.force) { + Logger.debug(this.libraryNameDraw, data); + } + } + + public void debug(final String data, Object... values) { + if (this.printDebug || this.force) { + Logger.debug(this.libraryNameDraw, data, values); + } + } + + public void displayBackTrace() { + // TODO Auto-generated method stub + } + + public void error(final String data) { + if (this.printError || this.force) { + Logger.error(this.libraryNameDraw, data); + } + } + + public void error(final String data, Object... values) { + if (this.printError || this.force) { + Logger.error(this.libraryNameDraw, data, values); + } + } + + public void info(final String data) { + if (this.printInfo || this.force) { + Logger.info(this.libraryNameDraw, data); + } + } + + public void info(final String data, Object... values) { + if (this.printInfo || this.force) { + Logger.info(this.libraryNameDraw, data, values); + } + } + + public void print(final String data) { + if (this.printPrint || this.force) { + Logger.print(this.libraryNameDraw, data); + } + } + + public void print(final String data, Object... values) { + if (this.printPrint || this.force) { + Logger.print(this.libraryNameDraw, data, values); + } + } + + public void todo(final String data) { + if (this.printTodo || this.force) { + Logger.todo(this.libraryNameDraw, data); + } + } + + public void todo(final String data, Object... values) { + if (this.printTodo || this.force) { + Logger.todo(this.libraryNameDraw, data, values); + } + } + + public void verbose(final String data) { + if (this.printVerbose || this.force) { + Logger.verbose(this.libraryNameDraw, data); + } + } + + public void warning(final String data) { + if (this.printWarning || this.force) { + Logger.warning(this.libraryNameDraw, data); + } + } + + public void warning(final String data, Object... values) { + if (this.printWarning || this.force) { + Logger.warning(this.libraryNameDraw, data, values); + } + } + +}