/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
* or http://forgerock.org/license/CDDLv1.0.html.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at legal-notices/CDDLv1_0.txt.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
*
* Copyright 2014-2015 ForgeRock AS.
*/
package org.opends.server.loggers;
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.TreeMap;
/**
* Provides mapping from class names to simple category names used for logging.
* <p>
* Given a classname, eg org.forgerock.opendj.server.core.SomeClass, it allows
* to get the corresponding simplified category name if it exists, eg "CORE". If
* no simplified category name exist, the classname is used as a category name.
*/
public class LoggingCategoryNames
{
/**
* Contains mapping from class names (or package names) to category names. In
* most case, package name is sufficient to map to a category name. It is
* valid if several entries point to the same category name.
*/
private static final NavigableMap<String, String> NAMES = new TreeMap<>();
static
{
// The category used for messages associated with the core server.
NAMES.put("org.opends.server.core", "CORE");
NAMES.put("org.forgerock.opendj.ldap", "CORE");
// The category used for messages associated with server extensions
// (e.g. extended operations, SASL mechanisms, password storage, schemes, password validators, etc.).
NAMES.put("org.opends.server.extensions", "EXTENSIONS");
// The category used for messages associated with
// connection and protocol handling (e.g., ASN.1 and LDAP).
NAMES.put("org.opends.server.protocol", "PROTOCOL");
NAMES.put("org.forgerock.opendj.io", "PROTOCOL");
// The category used for messages associated with configuration handling.
NAMES.put("org.opends.server.config", "CONFIG");
// The category used for messages associated with the server loggers.
NAMES.put("org.opends.server.loggers", "LOG");
// The category used for messages associated with the general server utilities.
NAMES.put("org.opends.server.util", "UTIL");
// The category used for messages associated with the server schema elements.
NAMES.put("org.opends.server.schema", "SCHEMA");
NAMES.put("org.forgerock.opendj.ldap.schema", "SCHEMA");
// The category used for messages associated with the server controls.
NAMES.put("org.opends.server.controls", "CONTROLS");
NAMES.put("org.forgerock.opendj.ldap.controls", "CONTROLS");
// The category that will be used for messages associated with plugin processing.
NAMES.put("org.opends.server.plugins", "PLUGIN");
// The category used for messages associated with the JE backend.
NAMES.put("org.opends.server.backends.jeb", "JEB");
// The category used for messages associated with the pluggable backend.
NAMES.put("org.opends.server.backends.pluggable", "PLUGGABLE");
// The category used for messages associated with the PDB backend.
NAMES.put("org.opends.server.backends.pdb", "PDB");
// The category used for messages associated with generic backends.
NAMES.put("org.opends.server.backends", "BACKEND");
// The category used for messages associated with tools
NAMES.put("org.opends.server.tools", "TOOLS");
// The category used for messages associated with upgrade tool
NAMES.put("org.opends.server.tools.upgrade", "UPGRADE");
// The category used for messages associated with tasks
NAMES.put("org.opends.server.tasks", "TASK");
// The category used for messages associated with Access Control
NAMES.put("org.opends.server.authorization", "ACCESS_CONTROL");
// The category used for messages associated with the administration framework.
NAMES.put("org.opends.server.admin", "ADMIN");
// The category used for messages associated with the Synchronization
NAMES.put("org.opends.server.replication", "SYNC");
// The category used for messages associated with quicksetup tools
NAMES.put("org.opends.quicksetup", "QUICKSETUP");
// The category used for messages associated with the tool like the offline installer and unintaller.
NAMES.put("org.opends.quicksetup.offline", "ADMIN_TOOL");
NAMES.put("org.opends.guitools.uninstaller", "ADMIN_TOOL");
// The category used for messages associated with the dsconfig
// administration tool.
NAMES.put("org.opends.admin.ads", "DSCONFIG");
// The category used for messages associated with common audit.
NAMES.put("org.forgerock.audit", "AUDIT");
}
/**
* Returns the simple category name corresponding to the provided class name
* or the class name if no mapping corresponds.
*
* @param className
* The classname to retrieve the category name from.
* @return the simple category name, or the provided className if no matching
* simple category name is found
*/
public static String getCategoryName(final String className)
{
final Entry<String, String> entry = NAMES.floorEntry(className);
if (entry != null && className.startsWith(entry.getKey()))
{
return entry.getValue();
}
return className;
}
}