Skip to content

Commit 623386f

Browse files
committed
Each appender uses his own version of formatter
1 parent 302edcb commit 623386f

9 files changed

Lines changed: 122 additions & 25 deletions

File tree

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/LoggerContext.java‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.androidannotations.logger.appender.ConsoleAppender;
2828
import org.androidannotations.logger.appender.FileAppender;
2929
import org.androidannotations.logger.appender.MessagerAppender;
30+
import org.androidannotations.logger.formatter.Formatter;
3031

3132
public class LoggerContext {
3233

@@ -35,7 +36,6 @@ public class LoggerContext {
3536

3637
private Level currentLevel = DEFAULT_LEVEL;
3738
private List<Appender> appenders = new ArrayList<Appender>();
38-
private Formatter formatter = new Formatter();
3939

4040
public static LoggerContext getInstance() {
4141
if (INSTANCE == null) {
@@ -54,8 +54,9 @@ public static LoggerContext getInstance() {
5454
}
5555

5656
public void writeLog(Level level, String loggerName, String message, Element element, AnnotationMirror annotationMirror, Throwable thr, Object... args) {
57-
String log = formatter.buildLog(level, loggerName, message, thr, args);
5857
for (Appender appender : appenders) {
58+
Formatter formatter = appender.getFormatter();
59+
String log = formatter.buildLog(level, loggerName, message, thr, args);
5960
appender.append(level, element, annotationMirror, log);
6061
}
6162
}

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/Appender.java‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,22 @@
2121

2222
import org.androidannotations.helper.OptionsHelper;
2323
import org.androidannotations.logger.Level;
24+
import org.androidannotations.logger.formatter.Formatter;
2425

2526
public abstract class Appender {
2627

28+
protected final Formatter formatter;
2729
protected ProcessingEnvironment processingEnv;
2830
protected OptionsHelper optionsHelper;
2931

32+
public Appender(Formatter formatter) {
33+
this.formatter = formatter;
34+
}
35+
36+
public Formatter getFormatter() {
37+
return formatter;
38+
}
39+
3040
public void setProcessingEnv(ProcessingEnvironment processingEnv) {
3141
this.processingEnv = processingEnv;
3242
optionsHelper = new OptionsHelper(processingEnv);

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/ConsoleAppender.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@
1919
import javax.lang.model.element.Element;
2020

2121
import org.androidannotations.logger.Level;
22+
import org.androidannotations.logger.formatter.FormatterFull;
2223

2324
public class ConsoleAppender extends Appender {
2425

26+
public ConsoleAppender() {
27+
super(new FormatterFull());
28+
}
29+
2530
@Override
2631
public void open() {
2732
}

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/FileAppender.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
import org.androidannotations.helper.FileHelper;
3030
import org.androidannotations.logger.Level;
31+
import org.androidannotations.logger.formatter.FormatterFull;
3132

3233
public class FileAppender extends Appender {
3334

@@ -36,6 +37,10 @@ public class FileAppender extends Appender {
3637
private File file;
3738
private FileOutputStream outputStream;
3839

40+
public FileAppender() {
41+
super(new FormatterFull());
42+
}
43+
3944
@Override
4045
public synchronized void open() {
4146
if (!isStreamOpened()) {

‎AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/appender/MessagerAppender.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,14 @@
2121
import javax.tools.Diagnostic.Kind;
2222

2323
import org.androidannotations.logger.Level;
24+
import org.androidannotations.logger.formatter.FormatterSimple;
2425

2526
public class MessagerAppender extends Appender {
2627

28+
public MessagerAppender() {
29+
super(new FormatterSimple());
30+
}
31+
2732
private Messager messager;
2833

2934
@Override

AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/Formatter.java renamed to AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/logger/formatter/Formatter.java

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* License for the specific language governing permissions and limitations under
1414
* the License.
1515
*/
16-
package org.androidannotations.logger;
16+
package org.androidannotations.logger.formatter;
1717

1818
import java.io.PrintWriter;
1919
import java.io.StringWriter;
@@ -22,32 +22,26 @@
2222
import java.util.Arrays;
2323
import java.util.Date;
2424

25-
public class Formatter {
25+
import org.androidannotations.logger.Level;
26+
import org.androidannotations.logger.Logger;
27+
28+
public abstract class Formatter {
2629

2730
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm:ss.S");
2831
private static final String ARGS_PATTERN = "{}";
2932
private static final int ARGS_PATTERN_LENGTH = ARGS_PATTERN.length();
3033

31-
public String buildLog(Level level, String loggerName, String message, Throwable thr, Object... args) {
32-
String fullMessage = buildFullMessage(message, args);
33-
StringBuilder stringBuilder = new StringBuilder(fullMessage.length());
34-
35-
stringBuilder.append(DATE_FORMAT.format(new Date())) //
36-
.append(" [").append(Thread.currentThread().getName()).append("]") //
37-
.append(" ").append(level.name) //
38-
.append(" ").append(loggerName) //
39-
.append(":").append(getCallerLineNumber()) //
40-
.append(" - ").append(fullMessage);
34+
public abstract String buildLog(Level level, String loggerName, String message, Throwable thr, Object... args);
4135

42-
// Stacktrace
43-
if (thr != null) {
44-
stringBuilder.append('\n').append(stackTraceToString(thr));
45-
}
36+
protected String getCurrentThread() {
37+
return Thread.currentThread().getName();
38+
}
4639

47-
return stringBuilder.toString();
40+
protected String getTime() {
41+
return DATE_FORMAT.format(new Date());
4842
}
4943

50-
public String buildFullMessage(String message, Object... args) {
44+
protected String buildFullMessage(String message, Object... args) {
5145
StringBuilder stringBuilder = new StringBuilder(message.length());
5246
int lastIndex = 0;
5347
int argIndex = 0;
@@ -74,21 +68,21 @@ public String buildFullMessage(String message, Object... args) {
7468
return stringBuilder.toString();
7569
}
7670

77-
private String formatArgument(Object arg) {
71+
protected String formatArgument(Object arg) {
7872
if (arg != null && arg.getClass().isArray()) {
7973
return Arrays.toString((Object[]) arg);
8074
}
8175
return arg.toString();
8276
}
8377

84-
private String stackTraceToString(Throwable e) {
78+
protected String stackTraceToString(Throwable e) {
8579
StringWriter writer = new StringWriter();
8680
PrintWriter pw = new PrintWriter(writer);
8781
e.printStackTrace(pw);
8882
return writer.toString();
8983
}
9084

91-
private int getCallerLineNumber() {
85+
protected int getCallerLineNumber() {
9286
boolean previousWasLogger = false;
9387
String loggerClassName = Logger.class.getCanonicalName();
9488

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* Copyright (C) 2010-2013 eBusiness Information, Excilys Group
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
5+
* use this file except in compliance with the License. You may obtain a copy of
6+
* the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed To in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13+
* License for the specific language governing permissions and limitations under
14+
* the License.
15+
*/
16+
package org.androidannotations.logger.formatter;
17+
18+
import org.androidannotations.logger.Level;
19+
20+
public class FormatterFull extends Formatter {
21+
22+
@Override
23+
public String buildLog(Level level, String loggerName, String message, Throwable thr, Object... args) {
24+
StringBuilder stringBuilder = new StringBuilder();
25+
26+
stringBuilder.append(getTime()) //
27+
.append(" [").append(getCurrentThread()).append("]") //
28+
.append(" ").append(level.name) //
29+
.append(" ").append(loggerName) //
30+
.append(":").append(getCallerLineNumber()) //
31+
.append(" - ").append(buildFullMessage(message, args));
32+
33+
// Stacktrace
34+
if (thr != null) {
35+
stringBuilder.append('\n').append(stackTraceToString(thr));
36+
}
37+
38+
return stringBuilder.toString();
39+
}
40+
41+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* Copyright (C) 2010-2013 eBusiness Information, Excilys Group
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
5+
* use this file except in compliance with the License. You may obtain a copy of
6+
* the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed To in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13+
* License for the specific language governing permissions and limitations under
14+
* the License.
15+
*/
16+
package org.androidannotations.logger.formatter;
17+
18+
import org.androidannotations.logger.Level;
19+
20+
public class FormatterSimple extends Formatter {
21+
22+
@Override
23+
public String buildLog(Level level, String loggerName, String message, Throwable thr, Object... args) {
24+
StringBuilder stringBuilder = new StringBuilder();
25+
26+
stringBuilder.append(buildFullMessage(message, args));
27+
28+
// Stacktrace
29+
if (thr != null) {
30+
stringBuilder.append('\n').append(stackTraceToString(thr));
31+
}
32+
33+
return stringBuilder.toString();
34+
}
35+
36+
}

AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/logger/FormatterTest.java renamed to AndroidAnnotations/androidannotations/src/test/java/org/androidannotations/logger/formatter/FormatterTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* License for the specific language governing permissions and limitations under
1414
* the License.
1515
*/
16-
package org.androidannotations.logger;
16+
package org.androidannotations.logger.formatter;
1717

1818
import java.util.Arrays;
1919
import java.util.List;
@@ -23,7 +23,7 @@
2323

2424
public class FormatterTest {
2525

26-
private Formatter formatter = new Formatter();
26+
private Formatter formatter = new FormatterSimple();
2727

2828
class SomeObject {
2929
String name;

0 commit comments

Comments
 (0)