From 623386f6ccd9dbd06df4632022f72fa30fbb32a2 Mon Sep 17 00:00:00 2001 From: Damien Date: Wed, 1 Jan 2014 23:02:12 +0100 Subject: [PATCH 1/2] Each appender uses his own version of formatter --- .../logger/LoggerContext.java | 5 ++- .../logger/appender/Appender.java | 10 +++++ .../logger/appender/ConsoleAppender.java | 5 +++ .../logger/appender/FileAppender.java | 5 +++ .../logger/appender/MessagerAppender.java | 5 +++ .../logger/{ => formatter}/Formatter.java | 36 +++++++--------- .../logger/formatter/FormatterFull.java | 41 +++++++++++++++++++ .../logger/formatter/FormatterSimple.java | 36 ++++++++++++++++ .../logger/{ => formatter}/FormatterTest.java | 4 +- 9 files changed, 122 insertions(+), 25 deletions(-) rename AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/{ => formatter}/Formatter.java (71%) create mode 100644 AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/FormatterFull.java create mode 100644 AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/FormatterSimple.java rename AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/logger/{ => formatter}/FormatterTest.java (95%) diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/LoggerContext.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/LoggerContext.java index c1bf554dd5..5ce570a079 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/LoggerContext.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/LoggerContext.java @@ -27,6 +27,7 @@ import org.androidannotations.logger.appender.ConsoleAppender; import org.androidannotations.logger.appender.FileAppender; import org.androidannotations.logger.appender.MessagerAppender; +import org.androidannotations.logger.formatter.Formatter; public class LoggerContext { @@ -35,7 +36,6 @@ public class LoggerContext { private Level currentLevel = DEFAULT_LEVEL; private List appenders = new ArrayList(); - private Formatter formatter = new Formatter(); public static LoggerContext getInstance() { if (INSTANCE == null) { @@ -54,8 +54,9 @@ public static LoggerContext getInstance() { } public void writeLog(Level level, String loggerName, String message, Element element, AnnotationMirror annotationMirror, Throwable thr, Object... args) { - String log = formatter.buildLog(level, loggerName, message, thr, args); for (Appender appender : appenders) { + Formatter formatter = appender.getFormatter(); + String log = formatter.buildLog(level, loggerName, message, thr, args); appender.append(level, element, annotationMirror, log); } } diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/Appender.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/Appender.java index 30edd79cc5..6f070e1cc9 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/Appender.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/Appender.java @@ -21,12 +21,22 @@ import org.androidannotations.helper.OptionsHelper; import org.androidannotations.logger.Level; +import org.androidannotations.logger.formatter.Formatter; public abstract class Appender { + protected final Formatter formatter; protected ProcessingEnvironment processingEnv; protected OptionsHelper optionsHelper; + public Appender(Formatter formatter) { + this.formatter = formatter; + } + + public Formatter getFormatter() { + return formatter; + } + public void setProcessingEnv(ProcessingEnvironment processingEnv) { this.processingEnv = processingEnv; optionsHelper = new OptionsHelper(processingEnv); diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/ConsoleAppender.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/ConsoleAppender.java index 02e6169f46..7d73592dbf 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/ConsoleAppender.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/ConsoleAppender.java @@ -19,9 +19,14 @@ import javax.lang.model.element.Element; import org.androidannotations.logger.Level; +import org.androidannotations.logger.formatter.FormatterFull; public class ConsoleAppender extends Appender { + public ConsoleAppender() { + super(new FormatterFull()); + } + @Override public void open() { } diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/FileAppender.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/FileAppender.java index aeb43ba8f9..921382d5ac 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/FileAppender.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/FileAppender.java @@ -28,6 +28,7 @@ import org.androidannotations.helper.FileHelper; import org.androidannotations.logger.Level; +import org.androidannotations.logger.formatter.FormatterFull; public class FileAppender extends Appender { @@ -36,6 +37,10 @@ public class FileAppender extends Appender { private File file; private FileOutputStream outputStream; + public FileAppender() { + super(new FormatterFull()); + } + @Override public synchronized void open() { if (!isStreamOpened()) { diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/MessagerAppender.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/MessagerAppender.java index e8ed18ac1c..47845e1d07 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/MessagerAppender.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/MessagerAppender.java @@ -21,9 +21,14 @@ import javax.tools.Diagnostic.Kind; import org.androidannotations.logger.Level; +import org.androidannotations.logger.formatter.FormatterSimple; public class MessagerAppender extends Appender { + public MessagerAppender() { + super(new FormatterSimple()); + } + private Messager messager; @Override diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/Formatter.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/Formatter.java similarity index 71% rename from AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/Formatter.java rename to AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/Formatter.java index 69c94e823c..d4f25ef1c9 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/Formatter.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/Formatter.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.androidannotations.logger; +package org.androidannotations.logger.formatter; import java.io.PrintWriter; import java.io.StringWriter; @@ -22,32 +22,26 @@ import java.util.Arrays; import java.util.Date; -public class Formatter { +import org.androidannotations.logger.Level; +import org.androidannotations.logger.Logger; + +public abstract class Formatter { private static final DateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm:ss.S"); private static final String ARGS_PATTERN = "{}"; private static final int ARGS_PATTERN_LENGTH = ARGS_PATTERN.length(); - public String buildLog(Level level, String loggerName, String message, Throwable thr, Object... args) { - String fullMessage = buildFullMessage(message, args); - StringBuilder stringBuilder = new StringBuilder(fullMessage.length()); - - stringBuilder.append(DATE_FORMAT.format(new Date())) // - .append(" [").append(Thread.currentThread().getName()).append("]") // - .append(" ").append(level.name) // - .append(" ").append(loggerName) // - .append(":").append(getCallerLineNumber()) // - .append(" - ").append(fullMessage); + public abstract String buildLog(Level level, String loggerName, String message, Throwable thr, Object... args); - // Stacktrace - if (thr != null) { - stringBuilder.append('\n').append(stackTraceToString(thr)); - } + protected String getCurrentThread() { + return Thread.currentThread().getName(); + } - return stringBuilder.toString(); + protected String getTime() { + return DATE_FORMAT.format(new Date()); } - public String buildFullMessage(String message, Object... args) { + protected String buildFullMessage(String message, Object... args) { StringBuilder stringBuilder = new StringBuilder(message.length()); int lastIndex = 0; int argIndex = 0; @@ -74,21 +68,21 @@ public String buildFullMessage(String message, Object... args) { return stringBuilder.toString(); } - private String formatArgument(Object arg) { + protected String formatArgument(Object arg) { if (arg != null && arg.getClass().isArray()) { return Arrays.toString((Object[]) arg); } return arg.toString(); } - private String stackTraceToString(Throwable e) { + protected String stackTraceToString(Throwable e) { StringWriter writer = new StringWriter(); PrintWriter pw = new PrintWriter(writer); e.printStackTrace(pw); return writer.toString(); } - private int getCallerLineNumber() { + protected int getCallerLineNumber() { boolean previousWasLogger = false; String loggerClassName = Logger.class.getCanonicalName(); diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/FormatterFull.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/FormatterFull.java new file mode 100644 index 0000000000..9b7837f89b --- /dev/null +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/FormatterFull.java @@ -0,0 +1,41 @@ +/** + * Copyright (C) 2010-2013 eBusiness Information, Excilys Group + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed To in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.androidannotations.logger.formatter; + +import org.androidannotations.logger.Level; + +public class FormatterFull extends Formatter { + + @Override + public String buildLog(Level level, String loggerName, String message, Throwable thr, Object... args) { + StringBuilder stringBuilder = new StringBuilder(); + + stringBuilder.append(getTime()) // + .append(" [").append(getCurrentThread()).append("]") // + .append(" ").append(level.name) // + .append(" ").append(loggerName) // + .append(":").append(getCallerLineNumber()) // + .append(" - ").append(buildFullMessage(message, args)); + + // Stacktrace + if (thr != null) { + stringBuilder.append('\n').append(stackTraceToString(thr)); + } + + return stringBuilder.toString(); + } + +} diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/FormatterSimple.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/FormatterSimple.java new file mode 100644 index 0000000000..d4a765861b --- /dev/null +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/FormatterSimple.java @@ -0,0 +1,36 @@ +/** + * Copyright (C) 2010-2013 eBusiness Information, Excilys Group + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed To in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.androidannotations.logger.formatter; + +import org.androidannotations.logger.Level; + +public class FormatterSimple extends Formatter { + + @Override + public String buildLog(Level level, String loggerName, String message, Throwable thr, Object... args) { + StringBuilder stringBuilder = new StringBuilder(); + + stringBuilder.append(buildFullMessage(message, args)); + + // Stacktrace + if (thr != null) { + stringBuilder.append('\n').append(stackTraceToString(thr)); + } + + return stringBuilder.toString(); + } + +} diff --git a/AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/logger/FormatterTest.java b/AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/logger/formatter/FormatterTest.java similarity index 95% rename from AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/logger/FormatterTest.java rename to AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/logger/formatter/FormatterTest.java index ce745db27b..0498e9403b 100644 --- a/AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/logger/FormatterTest.java +++ b/AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/logger/formatter/FormatterTest.java @@ -13,7 +13,7 @@ * License for the specific language governing permissions and limitations under * the License. */ -package org.androidannotations.logger; +package org.androidannotations.logger.formatter; import java.util.Arrays; import java.util.List; @@ -23,7 +23,7 @@ public class FormatterTest { - private Formatter formatter = new Formatter(); + private Formatter formatter = new FormatterSimple(); class SomeObject { String name; From b6ac6127107a8a9d835580e03e576bac695c7edd Mon Sep 17 00:00:00 2001 From: Damien Date: Wed, 1 Jan 2014 23:07:27 +0100 Subject: [PATCH 2/2] Add AA version in initialize log --- .../org/androidannotations/AndroidAnnotationProcessor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java index 5cebaef58b..b24b9c68d9 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/AndroidAnnotationProcessor.java @@ -75,8 +75,6 @@ public synchronized void init(ProcessingEnvironment processingEnv) { LoggerContext loggerContext = LoggerContext.getInstance(); loggerContext.setProcessingEnv(processingEnv); - LOGGER.info("Initialize AndroidAnnotationProcessor with options {}", processingEnv.getOptions()); - try { loadPropertyFile(); loadApiPropertyFile(); @@ -84,6 +82,8 @@ public synchronized void init(ProcessingEnvironment processingEnv) { LOGGER.error("Can't load API or core properties files", e); } + LOGGER.info("Initialize AndroidAnnotations {} with options {}", getAAProcessorVersion(), processingEnv.getOptions()); + annotationHandlers = new AnnotationHandlers(processingEnv); }