Refactor liblttng-ust-jul in liblttng-ust-agent
[lttng-ust.git] / liblttng-ust-jul / org / lttng / ust / jul / LTTngLogHandler.java
1 /*
2 * Copyright (C) 2013 - David Goulet <dgoulet@efficios.com>
3 *
4 * This library is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License, version 2.1 only,
6 * as published by the Free Software Foundation.
7 *
8 * This library is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this library; if not, write to the Free Software Foundation,
15 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17
18 package org.lttng.ust.jul;
19
20 import java.lang.String;
21 import java.util.logging.Handler;
22 import java.util.logging.LogRecord;
23 import java.util.logging.LogManager;
24 import java.util.logging.Level;
25 import java.util.logging.Logger;
26 import java.util.Collections;
27 import java.util.HashMap;
28 import java.util.Map;
29
30 import org.lttng.ust.jul.LTTngUst;
31
32 public class LTTngLogHandler extends Handler {
33 /* Am I a root Log Handler. */
34 public int is_root = 0;
35 public int refcount = 0;
36
37 /* Logger object attached to this handler that can trigger a tracepoint. */
38 public Map<String, LTTngEvent> enabledEvents =
39 Collections.synchronizedMap(new HashMap<String, LTTngEvent>());
40
41 /* Constructor */
42 public LTTngLogHandler() {
43 super();
44 /* Initialize LTTng UST tracer. */
45 LTTngUst.init();
46 }
47
48 /*
49 * Cleanup this handler state meaning put it back to a vanilla state.
50 */
51 public void clear() {
52 this.enabledEvents.clear();
53 }
54
55 @Override
56 public void close() throws SecurityException {}
57
58 @Override
59 public void flush() {}
60
61 @Override
62 public void publish(LogRecord record) {
63 /*
64 * Specific tracepoing designed for JUL events. The source class of the
65 * caller is used for the event name, the raw message is taken, the
66 * loglevel of the record and the thread ID.
67 */
68 if (this.is_root == 1) {
69 LTTngUst.tracepointS(record.getMessage(),
70 record.getLoggerName(), record.getSourceClassName(),
71 record.getSourceMethodName(), record.getMillis(),
72 record.getLevel().intValue(), record.getThreadID());
73 } else {
74 LTTngUst.tracepointU(record.getMessage(),
75 record.getLoggerName(), record.getSourceClassName(),
76 record.getSourceMethodName(), record.getMillis(),
77 record.getLevel().intValue(), record.getThreadID());
78 }
79 }
80 }
This page took 0.037631 seconds and 4 git commands to generate.