MCPcopy Create free account
hub / github.com/cookpad/puree-android / PureeLogger

Class PureeLogger

puree/src/main/java/com/cookpad/puree/PureeLogger.java:16–121  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14import javax.annotation.ParametersAreNonnullByDefault;
15
16@ParametersAreNonnullByDefault
17public class PureeLogger {
18 private final PureeSerializer pureeSerializer;
19
20 final Map<Class<?>, List<PureeOutput>> sourceOutputMap = new HashMap<>();
21
22 final PureeStorage storage;
23
24 final ScheduledExecutorService executor;
25
26 public PureeLogger(Map<Class<?>, List<PureeOutput>> sourceOutputMap, PureeSerializer pureeSerializer, PureeStorage storage,
27 ScheduledExecutorService executor) {
28 this.sourceOutputMap.putAll(sourceOutputMap);
29 this.pureeSerializer = pureeSerializer;
30 this.storage = storage;
31 this.executor = executor;
32
33 forEachOutput(new PureeLogger.Consumer<PureeOutput>() {
34 @Override
35 public void accept(@Nonnull PureeOutput value) {
36 value.initialize(PureeLogger.this);
37 }
38 });
39 }
40
41 public void send(Object log) {
42 List<PureeOutput> outputs = getRegisteredOutputPlugins(log);
43 for (PureeOutput output : outputs) {
44 output.receive(serializeLog(log));
45 }
46 }
47
48 public PureeStorage getStorage() {
49 return storage;
50 }
51
52 public ScheduledExecutorService getExecutor() {
53 return executor;
54 }
55
56 public Records getBufferedLogs() {
57 return storage.selectAll();
58 }
59
60 public void discardBufferedLogs() {
61 storage.clear();
62 }
63
64 public void truncateBufferedLogs(int truncateThresholdInRows) {
65 storage.truncateBufferedLogs(truncateThresholdInRows);
66 }
67
68 public void flush() {
69 forEachOutput(new PureeLogger.Consumer<PureeOutput>() {
70 @Override
71 public void accept(@Nonnull PureeOutput value) {
72 value.flush();
73 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected