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.io.IOException;
32 import java.text.SimpleDateFormat;
33 import java.util.Date;
34 import java.util.logging.FileHandler;
35 import java.util.logging.Formatter;
36 import java.util.logging.Handler;
37 import java.util.logging.Level;
38 import java.util.logging.Logger;
39
40 import io.github.prolobjectlink.prolog.AbstractLogger;
41 import io.github.prolobjectlink.prolog.PrologLogger;
42
43
44
45
46
47
48 final class JplLogger extends AbstractLogger implements PrologLogger {
49
50 private static final String MESSAGE = "Logger File Handler can't be created";
51 private static final Logger LOGGER = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
52
53 JplLogger() {
54 this(Level.INFO);
55 }
56
57 private JplLogger(Level level) {
58 LOGGER.setLevel(level);
59 Logger rootlogger = LOGGER.getParent();
60 SimpleDateFormat f = new SimpleDateFormat("yyyy.MM.dd");
61 String date = f.format(new Date());
62 Formatter formatter = new JplFormatter();
63 for (Handler h : rootlogger.getHandlers()) {
64 h.setFormatter(formatter);
65 h.setLevel(level);
66 }
67 FileHandler file = null;
68 try {
69 file = new FileHandler("%t/prolobjectlink-" + date + ".log", true);
70 } catch (SecurityException e) {
71 rootlogger.log(Level.SEVERE, MESSAGE, e);
72 } catch (IOException e) {
73 rootlogger.log(Level.SEVERE, MESSAGE, e);
74 }
75 assert file != null;
76 file.setFormatter(formatter);
77 LOGGER.addHandler(file);
78 }
79
80 public void log(Object sender, Level level, Object message, Throwable throwable) {
81 LOGGER.log(level, sender + "\n" + message, throwable);
82 }
83
84 }