MCPcopy Create free account
hub / github.com/BaseXdb/basex / LogTarget

Enum LogTarget

basex-core/src/main/java/org/basex/util/log/LogTarget.java:16–74  ·  view source on GitHub ↗

Log targets. @author BaseX Team, BSD License @author Christian Gruen

Source from the content-addressed store, hash-verified

14 * @author Christian Gruen
15 */
16enum LogTarget {
17 /** Standard output. */
18 STDOUT {
19 @Override
20 void write(final Log log, final LogEntry entry) {
21 Util.println(entry);
22 }
23 },
24 /** Standard error.*/
25 STDERR {
26 @Override
27 void write(final Log log, final LogEntry entry) {
28 Util.errln(entry);
29 }
30 },
31 /** Database directory. */
32 DATA {
33 @Override
34 void write(final Log log, final LogEntry entry) throws IOException {
35 log.write(entry);
36 }
37 },
38 /** SLF4J logging.*/
39 SLF4J {
40 @Override
41 void write(final Log log, final LogEntry entry) {
42 if(slf4j != null) slf4j.accept(entry.type, entry.toString());
43 }
44 };
45
46 /** SLF4J logger ({@code null} if not available). */
47 private static BiConsumer<String, String> slf4j;
48
49 static {
50 final Class<?> cLoggerFactory = Reflect.find("org.slf4j.LoggerFactory");
51 final Class<?> cLogger = Reflect.find("org.slf4j.Logger");
52 final Method mLogger = Reflect.method(cLoggerFactory, "getLogger", String.class);
53 final Object logger = Reflect.invoke(mLogger, null, Prop.NAME);
54 slf4j = (type, text) -> {
55 final String level = Strings.eqic(type, "trace", "debug", "warn", "error") ?
56 type.toLowerCase(Locale.ENGLISH) : "info";
57 final Method method = Reflect.method(cLogger, level, String.class);
58 if(method != null) {
59 Reflect.invoke(method, logger, text);
60 } else {
61 Util.errln("SLF4J logger not available.");
62 slf4j = null;
63 }
64 };
65 }
66
67 /**
68 * Writes a log entry.
69 * @param log logger
70 * @param entry log entry
71 * @throws IOException I/O exception
72 */
73 abstract void write(Log log, LogEntry entry) throws IOException;

Callers

nothing calls this directly

Calls 5

findMethod · 0.95
methodMethod · 0.95
invokeMethod · 0.95
eqicMethod · 0.95
errlnMethod · 0.95

Tested by

no test coverage detected