2 * Copyright (C) 2015 - EfficiOS Inc., Alexandre Montplaisir <alexmonthy@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
.agent
.log4j
;
20 import java
.util
.Collection
;
21 import java
.util
.Collections
;
22 import java
.util
.Enumeration
;
23 import java
.util
.List
;
25 import java
.util
.TreeSet
;
27 import org
.apache
.log4j
.Appender
;
28 import org
.apache
.log4j
.Category
;
29 import org
.apache
.log4j
.LogManager
;
30 import org
.apache
.log4j
.Logger
;
31 import org
.lttng
.ust
.agent
.AbstractLttngAgent
;
34 * Agent implementation for using the Log4j logger, connecting to a root session
37 * @author Alexandre Montplaisir
39 class LttngLog4jAgent
extends AbstractLttngAgent
<LttngLogAppender
> {
41 private static LttngLog4jAgent instance
= null;
43 private LttngLog4jAgent() {
47 public static synchronized LttngLog4jAgent
getInstance() {
48 if (instance
== null) {
49 instance
= new LttngLog4jAgent();
55 public Collection
<String
> listAvailableEvents() {
56 Set
<String
> ret
= new TreeSet
<String
>();
58 @SuppressWarnings("unchecked")
59 List
<Logger
> loggers
= Collections
.list(LogManager
.getCurrentLoggers());
60 for (Logger logger
: loggers
) {
66 * Check if that logger has at least one LTTng log4j appender
69 if (hasLttngAppenderAttached(logger
)) {
70 ret
.add(logger
.getName());
77 private static boolean hasLttngAppenderAttached(Category logger
) {
78 @SuppressWarnings("unchecked")
79 Enumeration
<Appender
> appenders
= logger
.getAllAppenders();
80 if (appenders
!= null) {
81 for (Appender appender
: Collections
.list(appenders
)) {
82 if (appender
instanceof LttngLogAppender
) {
89 * A parent logger, if any, may be connected to an LTTng handler. In
90 * this case, we will want to include this child logger in the output,
91 * since it will be accessible by LTTng.
93 Category parent
= logger
.getParent();
95 return hasLttngAppenderAttached(parent
);
99 * We have reached the root logger and have not found any LTTng handler,
100 * this event will not be accessible.
This page took 0.031306 seconds and 4 git commands to generate.