X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust-java-agent%2Fjava%2Flttng-ust-agent-jul%2Forg%2Flttng%2Fust%2Fagent%2Fjul%2FLttngLogHandler.java;h=42bea9c47d8ee93188a5113c5e0260bfa4af6ca5;hb=c0c0989ab70574e09b2f7e8b48c2da6af664a849;hp=d8e0cb826eb40f3e37fd75d2b1ec68907b16ba66;hpb=d60dfbe48a0ceff16852f46419bcbc405502c61d;p=lttng-ust.git diff --git a/liblttng-ust-java-agent/java/lttng-ust-agent-jul/org/lttng/ust/agent/jul/LttngLogHandler.java b/liblttng-ust-java-agent/java/lttng-ust-agent-jul/org/lttng/ust/agent/jul/LttngLogHandler.java index d8e0cb82..42bea9c4 100644 --- a/liblttng-ust-java-agent/java/lttng-ust-agent-jul/org/lttng/ust/agent/jul/LttngLogHandler.java +++ b/liblttng-ust-java-agent/java/lttng-ust-agent-jul/org/lttng/ust/agent/jul/LttngLogHandler.java @@ -1,30 +1,25 @@ /* - * Copyright (C) 2015 - EfficiOS Inc., Alexandre Montplaisir - * Copyright (C) 2013 - David Goulet + * SPDX-License-Identifier: LGPL-2.1-only * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License, version 2.1 only, - * as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * Copyright (C) 2015 EfficiOS Inc. + * Copyright (C) 2015 Alexandre Montplaisir + * Copyright (C) 2013 David Goulet */ package org.lttng.ust.agent.jul; import java.io.IOException; +import java.util.Collection; +import java.util.Map; +import java.util.Map.Entry; import java.util.concurrent.atomic.AtomicLong; +import java.util.logging.Formatter; import java.util.logging.Handler; import java.util.logging.LogRecord; import org.lttng.ust.agent.ILttngAgent; import org.lttng.ust.agent.ILttngHandler; +import org.lttng.ust.agent.context.ContextInfoSerializer; /** * LTTng-UST JUL log handler. @@ -43,6 +38,17 @@ public class LttngLogHandler extends Handler implements ILttngHandler { private static final String SHARED_OBJECT_NAME = "lttng-ust-jul-jni"; + /** + * Dummy Formatter object, so we can use its + * {@link Formatter#formatMessage(LogRecord)} method. + */ + private static final Formatter FORMATTER = new Formatter() { + @Override + public String format(LogRecord record) { + throw new UnsupportedOperationException(); + } + }; + private final ILttngAgent agent; /** Number of events logged (really sent through JNI) by this handler */ @@ -103,27 +109,28 @@ public class LttngLogHandler extends Handler implements ILttngHandler { return; } + String formattedMessage = FORMATTER.formatMessage(record); + + /* Retrieve all the requested context information we can find */ + Collection>> enabledContexts = agent.getEnabledAppContexts(); + ContextInfoSerializer.SerializedContexts contextInfo = ContextInfoSerializer.queryAndSerializeRequestedContexts(enabledContexts); + eventCount.incrementAndGet(); + /* * Specific tracepoint designed for JUL events. The source class of the * caller is used for the event name, the raw message is taken, the * loglevel of the record and the thread ID. */ - tracepoint(record.getMessage(), + LttngJulApi.tracepointWithContext(formattedMessage, record.getLoggerName(), record.getSourceClassName(), record.getSourceMethodName(), record.getMillis(), record.getLevel().intValue(), - record.getThreadID()); + record.getThreadID(), + contextInfo.getEntriesArray(), + contextInfo.getStringsArray()); } - /* Send tracepoint information to the JNI library */ - private native void tracepoint(String msg, - String logger_name, - String class_name, - String method_name, - long millis, - int log_level, - int thread_id); }