package org.jacorb.config;
/*
* JacORB - a free Java ORB
*
* Copyright (C) 2000-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
import java.text.SimpleDateFormat;
import org.jacorb.orb.ORB;
/**
* Can be subclassed to provide initialization of a backend logging system
* based on parameters from the JacORB configuration.
*
* @author Andre Spiegel {@literal <spiegel@gnu.org>}
*/
public abstract class LoggingInitializer
{
public static final String ATTR_LOG_VERBOSITY = "jacorb.log.default.verbosity";
public static final String ATTR_LOG_FILE = "jacorb.logfile";
public static final String ATTR_LOG_APPEND = "jacorb.logfile.append";
public static final String ATTR_LOG_SIZE = "jacorb.logfile.maxLogSize";
public static final String ATTR_LOG_ROTATE = "jacorb.logfile.rotateCount";
public static final String ATTR_LOG_THREAD_ID = "jacorb.log.showThread";
public static final String ATTR_LOG_SRC_INFO = "jacorb.log.showSrcInfo";
public static final String ATTR_LOG_CLOCK = "jacorb.log.clockFormat";
/**
* Standard Logger name prefix
*/
public static final String ATTR_LOG_NAME = "org.jacorb";
/**
* If the given filename contains the string "$implname", replaces
* that string with the value of the configuration attribute
* "jacorb.implname", if that is set, or the serverId of the ORB
* otherwise. Also, as a special case, if $implname appears at the
* end of the filename, the extension .log is added to the resulting
* string.
*/
protected String substituteImplname (String filename,
Configuration config)
{
if (!filename.contains ("$implname"))
{
return filename;
}
else
{
String serverId;
ORB orb = config.getORB();
if (orb != null)
{
serverId = orb.getServerIdString();
}
else
{
// If the ORB is null it must be a singleton ORB. So create a unique file name for it.
serverId = "orbsingleton-" + (new SimpleDateFormat ("yyyyMdHms")).format (System.currentTimeMillis ());
}
String implName = config.getAttribute ("jacorb.implname", serverId);
if (filename.endsWith ("$implname"))
{
return filename.substring (0, filename.length()-9)
+ implName + ".log";
}
else
{
return filename.replace ("$implname", implName);
}
}
}
/**
* Implement this method to provide initialization for a given logging
* backend. The method should check itself whether the chosen logging
* backend is active (by verifying that the corresponding SLF4J adapter
* class is on the classpath).
*/
public abstract void init (Configuration config) throws ConfigurationException;
/**
* No-op function that may be overridden by implementation to provide
* shutdown facility on logging. This may be useful if the logging backend
* requires special shutdown.
*/
public void shutdownLogging ()
{
}
}