1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.core.pattern;
18
19 import java.util.UUID;
20
21 import org.apache.logging.log4j.core.LogEvent;
22 import org.apache.logging.log4j.core.config.plugins.Plugin;
23 import org.apache.logging.log4j.core.util.UuidUtil;
24
25
26
27
28 @Plugin(name = "UuidPatternConverter", category = PatternConverter.CATEGORY)
29 @ConverterKeys({ "u", "uuid" })
30 public final class UuidPatternConverter extends LogEventPatternConverter {
31
32 private final boolean isRandom;
33
34
35
36
37 private UuidPatternConverter(final boolean isRandom) {
38 super("u", "uuid");
39 this.isRandom = isRandom;
40 }
41
42
43
44
45
46
47
48 public static UuidPatternConverter newInstance(final String[] options) {
49 if (options.length == 0) {
50 return new UuidPatternConverter(false);
51 }
52
53 if (options.length > 1 || (!options[0].equalsIgnoreCase("RANDOM") && !options[0].equalsIgnoreCase("Time"))) {
54 LOGGER.error("UUID Pattern Converter only accepts a single option with the value \"RANDOM\" or \"TIME\"");
55 }
56 return new UuidPatternConverter(options[0].equalsIgnoreCase("RANDOM"));
57 }
58
59
60
61
62 @Override
63 public void format(final LogEvent event, final StringBuilder toAppendTo) {
64 final UUID uuid = isRandom ? UUID.randomUUID() : UuidUtil.getTimeBasedUuid();
65 toAppendTo.append(uuid.toString());
66 }
67 }