2
* Copyright (C) 2013 - David Goulet <dgoulet@efficios.com>
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.
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
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
18
package org.lttng.ust.jul;
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;
30
import org.lttng.ust.jul.LTTngUst;
32
public class LTTngLogHandler extends Handler {
33
/* Am I a root Log Handler. */
34
public int is_root = 0;
35
public int refcount = 0;
37
public LogManager logManager;
39
/* Logger object attached to this handler that can trigger a tracepoint. */
40
public Map<String, LTTngEvent> enabledEvents =
41
Collections.synchronizedMap(new HashMap<String, LTTngEvent>());
44
public LTTngLogHandler(LogManager logManager) {
47
this.logManager = logManager;
49
/* Initialize LTTng UST tracer. */
54
* Cleanup this handler state meaning put it back to a vanilla state.
57
this.enabledEvents.clear();
61
public void close() throws SecurityException {}
64
public void flush() {}
67
public void publish(LogRecord record) {
69
* Specific tracepoing designed for JUL events. The source class of the
70
* caller is used for the event name, the raw message is taken, the
71
* loglevel of the record and the thread ID.
73
if (this.is_root == 1) {
74
LTTngUst.tracepointS(record.getMessage(),
75
record.getLoggerName(), record.getSourceClassName(),
76
record.getSourceMethodName(), record.getMillis(),
77
record.getLevel().intValue(), record.getThreadID());
79
LTTngUst.tracepointU(record.getMessage(),
80
record.getLoggerName(), record.getSourceClassName(),
81
record.getSourceMethodName(), record.getMillis(),
82
record.getLevel().intValue(), record.getThreadID());