1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package io.github.prolobjectlink.prolog.jpl7;
30
31 import java.text.SimpleDateFormat;
32 import java.util.Date;
33 import java.util.logging.Formatter;
34 import java.util.logging.Level;
35 import java.util.logging.LogRecord;
36
37 import io.github.prolobjectlink.prolog.PrologFormatter;
38
39
40
41
42
43
44 final class JplFormatter extends Formatter implements PrologFormatter {
45
46 private static final String ERROR = "ERROR";
47 private static final String WARN = "WARN";
48 private static final String INFO = "INFO";
49 private static final String DEBUG = "DEBUG";
50 private static final String TRACE = "TRACE";
51
52 @Override
53 public String format(LogRecord record) {
54 StringBuilder buffer = new StringBuilder();
55
56
57 String levelString = "";
58 Level level = record.getLevel();
59 if (level.intValue() == Level.SEVERE.intValue()) {
60 levelString = ERROR;
61 } else if (level.intValue() == Level.WARNING.intValue()) {
62 levelString = WARN;
63 } else if (level.intValue() == Level.INFO.intValue()) {
64 levelString = INFO;
65 } else if (level.intValue() == Level.CONFIG.intValue()) {
66 levelString = DEBUG;
67 } else if (level.intValue() == Level.FINE.intValue()) {
68 levelString = DEBUG;
69 } else if (level.intValue() == Level.FINER.intValue()) {
70 levelString = DEBUG;
71 } else if (level.intValue() == Level.FINEST.intValue()) {
72 levelString = TRACE;
73 }
74
75 long millisecs = record.getMillis();
76 String name = record.getLoggerName();
77 String message = record.getMessage();
78 Throwable throwable = record.getThrown();
79 SimpleDateFormat f = new SimpleDateFormat("MMM-dd-yyyy HH:mm");
80 Date resultdate = new Date(millisecs);
81 String date = f.format(resultdate);
82
83
84 buffer.append('[');
85 buffer.append(name);
86 buffer.append(']');
87 buffer.append(' ');
88 buffer.append(levelString);
89 buffer.append(' ');
90 buffer.append(date);
91 buffer.append(' ');
92 buffer.append(message);
93 if (throwable != null) {
94 buffer.append('\n');
95 buffer.append(throwable);
96 buffer.append('\n');
97 StackTraceElement[] s = throwable.getStackTrace();
98 for (StackTraceElement stackTraceElement : s) {
99 buffer.append(stackTraceElement);
100 buffer.append('\n');
101 }
102 }
103 buffer.append('\n');
104 return "" + buffer + "";
105 }
106
107 }