From dba2b5a25d2cd1830c86a20ab754d57bd3f454ee Mon Sep 17 00:00:00 2001 From: Santiago Gonzalez Rojas Date: Fri, 13 Aug 2021 15:59:51 -0300 Subject: [PATCH 1/2] Add first implementation of Fox Logger --- modules/fox-logger/pom.xml | 48 ++++++ .../com.ensolvers.fox.logger/FoxLogger.java | 141 ++++++++++++++++++ pom.xml | 1 + 3 files changed, 190 insertions(+) create mode 100644 modules/fox-logger/pom.xml create mode 100644 modules/fox-logger/src/main/java/com.ensolvers.fox.logger/FoxLogger.java diff --git a/modules/fox-logger/pom.xml b/modules/fox-logger/pom.xml new file mode 100644 index 0000000..8dd0593 --- /dev/null +++ b/modules/fox-logger/pom.xml @@ -0,0 +1,48 @@ + + 4.0.0 + + + com.ensolvers.fox-java + main + 0.0.1-SNAPSHOT + ../.. + + + fox-logger + 0.0.1-SNAPSHOT + jar + + Fox - Logger + + + + org.slf4j + slf4j-api + 1.8.0-beta4 + + + log4j + log4j + 1.2.17 + + + com.newrelic.agent.java + newrelic-api + 3.28.0 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + + diff --git a/modules/fox-logger/src/main/java/com.ensolvers.fox.logger/FoxLogger.java b/modules/fox-logger/src/main/java/com.ensolvers.fox.logger/FoxLogger.java new file mode 100644 index 0000000..e958ee5 --- /dev/null +++ b/modules/fox-logger/src/main/java/com.ensolvers.fox.logger/FoxLogger.java @@ -0,0 +1,141 @@ +/* Copyright (c) 2021 Ensolvers + * All Rights Reserved + * + * The contents of this file is dual-licensed under 2 alternative Open Source/Free licenses: LGPL 2.1 or later and + * Apache License 2.0. (starting with JNA version 4.0.0). + * + * You can freely decide which license you want to apply to the project. + * + * You may obtain a copy of the LGPL License at: http://www.gnu.org/licenses/licenses.html + * + * A copy is also included in the downloadable source code package + * containing JNA, in file "LGPL2.1". + * + * You may obtain a copy of the Apache License at: http://www.apache.org/licenses/ + * + * A copy is also included in the downloadable source code package + * containing JNA, in file "AL2.0". + */ + +package com.ensolvers.fox.logger; + +import com.newrelic.api.agent.NewRelic; +import java.util.Collections; +import org.apache.log4j.Category; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; +import org.apache.log4j.PatternLayout; +import org.slf4j.helpers.MessageFormatter; + +/** Provides utilities for adding logging with New Relic support. */ +public class FoxLogger extends Category { + + private static final String INFO = + "[\u001b[1;34m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; + private static final String ERROR = + "[\u001b[1;31m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; + private static final String DEBUG = + "[\u001b[1;32m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; + private static final String WARN = + "[\u001b[1;35m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; + private static final String FATAL = + "[\u001b[1;31m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; + + private Logger logger; + + public static FoxLogger getLogger(String name) { + return new FoxLogger(LogManager.getLogger(name)); + } + + public FoxLogger(Logger logger) { + super(logger.getName()); + this.logger = logger; + } + + private void changeConversionPattern(String pattern) { + ((PatternLayout) logger.getParent().getAppender("stdout").getLayout()) + .setConversionPattern(pattern); + } + + @Override + public void info(Object message) { + this.changeConversionPattern(INFO); + this.logger.info(message); + } + + @Override + public void error(Object message) { + NewRelic.noticeError(String.valueOf(message)); + this.changeConversionPattern(ERROR); + this.logger.error(message); + } + + public void error(String message) { + NewRelic.noticeError(message); + this.changeConversionPattern(ERROR); + this.logger.error(message); + } + + // @Override + public void error(String message, Throwable t) { + NewRelic.noticeError(t, Collections.singletonMap("message", message)); + this.changeConversionPattern(ERROR); + this.logger.error(message, t); + } + + public void error(String message, boolean doNewRelicLog) { + if (doNewRelicLog) { + NewRelic.noticeError(message); + } + this.changeConversionPattern(ERROR); + this.logger.error(message); + } + + public void error(Throwable t, boolean doNewRelicLog) { + if (doNewRelicLog) { + NewRelic.noticeError(t); + } + this.changeConversionPattern(ERROR); + this.logger.error("UNHANDLED EXCEPTION", t); + } + + @Override + public void warn(Object message) { + this.changeConversionPattern(WARN); + this.logger.warn(message); + } + + @Override + public void warn(Object message, Throwable t) { + this.changeConversionPattern(WARN); + this.logger.warn(message, t); + } + + @Override + public void debug(Object message) { + this.changeConversionPattern(DEBUG); + this.logger.debug(message); + } + + @Override + public void fatal(Object message) { + this.changeConversionPattern(FATAL); + this.logger.fatal(message); + } + + public void finfo(String format, Object... args) { + this.info(MessageFormatter.arrayFormat(format, args).getMessage()); + } + + public void ferror(String format, Throwable t, Object... args) { + this.error(MessageFormatter.arrayFormat(format, args).getMessage(), t); + } + + public void ferrorWithoutException(String format, Object... args) { + this.error(MessageFormatter.arrayFormat(format, args).getMessage()); + } + + public void fwarn(String format, Object... args) { + this.warn(MessageFormatter.arrayFormat(format, args).getMessage()); + } +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index 47f3268..66a1d88 100644 --- a/pom.xml +++ b/pom.xml @@ -248,6 +248,7 @@ modules/fox-alerts modules/fox-quality modules/fox-cli + modules/fox-logger From f6c7f2875a6b4f1383fabd37f827e81c3537d030 Mon Sep 17 00:00:00 2001 From: Santiago Gonzalez Rojas Date: Thu, 19 Aug 2021 17:02:00 -0300 Subject: [PATCH 2/2] Remove unnecessary formatting --- modules/{fox-logger => fox-logging}/pom.xml | 2 +- .../com/ensolvers/fox/logging}/FoxLogger.java | 38 ++++--------------- pom.xml | 2 +- 3 files changed, 10 insertions(+), 32 deletions(-) rename modules/{fox-logger => fox-logging}/pom.xml (97%) rename modules/{fox-logger/src/main/java/com.ensolvers.fox.logger => fox-logging/src/main/java/com/ensolvers/fox/logging}/FoxLogger.java (67%) diff --git a/modules/fox-logger/pom.xml b/modules/fox-logging/pom.xml similarity index 97% rename from modules/fox-logger/pom.xml rename to modules/fox-logging/pom.xml index 8dd0593..cd34957 100644 --- a/modules/fox-logger/pom.xml +++ b/modules/fox-logging/pom.xml @@ -9,7 +9,7 @@ ../.. - fox-logger + fox-logging 0.0.1-SNAPSHOT jar diff --git a/modules/fox-logger/src/main/java/com.ensolvers.fox.logger/FoxLogger.java b/modules/fox-logging/src/main/java/com/ensolvers/fox/logging/FoxLogger.java similarity index 67% rename from modules/fox-logger/src/main/java/com.ensolvers.fox.logger/FoxLogger.java rename to modules/fox-logging/src/main/java/com/ensolvers/fox/logging/FoxLogger.java index e958ee5..8ca4429 100644 --- a/modules/fox-logger/src/main/java/com.ensolvers.fox.logger/FoxLogger.java +++ b/modules/fox-logging/src/main/java/com/ensolvers/fox/logging/FoxLogger.java @@ -17,30 +17,17 @@ * containing JNA, in file "AL2.0". */ -package com.ensolvers.fox.logger; +package com.ensolvers.fox.logging; import com.newrelic.api.agent.NewRelic; import java.util.Collections; import org.apache.log4j.Category; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; -import org.apache.log4j.PatternLayout; import org.slf4j.helpers.MessageFormatter; /** Provides utilities for adding logging with New Relic support. */ public class FoxLogger extends Category { - - private static final String INFO = - "[\u001b[1;34m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; - private static final String ERROR = - "[\u001b[1;31m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; - private static final String DEBUG = - "[\u001b[1;32m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; - private static final String WARN = - "[\u001b[1;35m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; - private static final String FATAL = - "[\u001b[1;31m %-5p \u001b[m] \u001b[0;37m%d{yyyy-MM-dd HH:mm:ss}\u001b[m \u001b[0;36m%c{3}\u001b[m - %m%n"; - private Logger logger; public static FoxLogger getLogger(String name) { @@ -52,34 +39,24 @@ public FoxLogger(Logger logger) { this.logger = logger; } - private void changeConversionPattern(String pattern) { - ((PatternLayout) logger.getParent().getAppender("stdout").getLayout()) - .setConversionPattern(pattern); - } - @Override public void info(Object message) { - this.changeConversionPattern(INFO); this.logger.info(message); } @Override public void error(Object message) { NewRelic.noticeError(String.valueOf(message)); - this.changeConversionPattern(ERROR); this.logger.error(message); } public void error(String message) { NewRelic.noticeError(message); - this.changeConversionPattern(ERROR); this.logger.error(message); } - // @Override public void error(String message, Throwable t) { NewRelic.noticeError(t, Collections.singletonMap("message", message)); - this.changeConversionPattern(ERROR); this.logger.error(message, t); } @@ -87,7 +64,6 @@ public void error(String message, boolean doNewRelicLog) { if (doNewRelicLog) { NewRelic.noticeError(message); } - this.changeConversionPattern(ERROR); this.logger.error(message); } @@ -95,34 +71,36 @@ public void error(Throwable t, boolean doNewRelicLog) { if (doNewRelicLog) { NewRelic.noticeError(t); } - this.changeConversionPattern(ERROR); this.logger.error("UNHANDLED EXCEPTION", t); } @Override public void warn(Object message) { - this.changeConversionPattern(WARN); this.logger.warn(message); } @Override public void warn(Object message, Throwable t) { - this.changeConversionPattern(WARN); this.logger.warn(message, t); } @Override public void debug(Object message) { - this.changeConversionPattern(DEBUG); this.logger.debug(message); } @Override public void fatal(Object message) { - this.changeConversionPattern(FATAL); this.logger.fatal(message); } + /** + * Log a message at different levels according to the specified format and argument. + * + * @param format like "This {} is {} a text" + * @param args like "first word, another word" + */ + public void finfo(String format, Object... args) { this.info(MessageFormatter.arrayFormat(format, args).getMessage()); } diff --git a/pom.xml b/pom.xml index 66a1d88..f9fac8d 100644 --- a/pom.xml +++ b/pom.xml @@ -248,7 +248,7 @@ modules/fox-alerts modules/fox-quality modules/fox-cli - modules/fox-logger + modules/fox-logging