1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.lookup;
18
19 import java.text.DateFormat;
20 import java.text.SimpleDateFormat;
21 import java.util.Date;
22
23 import org.apache.logging.log4j.Logger;
24 import org.apache.logging.log4j.Marker;
25 import org.apache.logging.log4j.MarkerManager;
26 import org.apache.logging.log4j.core.LogEvent;
27 import org.apache.logging.log4j.core.config.plugins.Plugin;
28 import org.apache.logging.log4j.status.StatusLogger;
29
30
31
32
33 @Plugin(name = "date", category = StrLookup.CATEGORY)
34 public class DateLookup implements StrLookup {
35
36 private static final Logger LOGGER = StatusLogger.getLogger();
37 private static final Marker LOOKUP = MarkerManager.getMarker("LOOKUP");
38
39
40
41
42
43
44 @Override
45 public String lookup(final String key) {
46 return formatDate(System.currentTimeMillis(), key);
47 }
48
49
50
51
52
53
54
55 @Override
56 public String lookup(final LogEvent event, final String key) {
57 return event == null ? lookup(key) : formatDate(event.getTimeMillis(), key);
58 }
59
60 private String formatDate(final long date, final String format) {
61 DateFormat dateFormat = null;
62 if (format != null) {
63 try {
64 dateFormat = new SimpleDateFormat(format);
65 } catch (final Exception ex) {
66 LOGGER.error(LOOKUP, "Invalid date format: [{}], using default", format, ex);
67 }
68 }
69 if (dateFormat == null) {
70 dateFormat = DateFormat.getInstance();
71 }
72 return dateFormat.format(new Date(date));
73 }
74 }