Class Debug
- java.lang.Object
-
- com.sun.identity.shared.debug.Debug
-
public class Debug extends Object
****************************************************************************Allows a uniform interface to file debug and exception information in a uniform format.
Debugsupports different levels/states of filing debug information (in the ascending order):OFF,ERROR,WARNING,MESSAGEandON. A given debug level/state is enabled if the debug state/level is set to at least that state/level. For example, if the debug state isERROR, only errors will be filed. If the debug state isWARNING, only errors and warnings will be filed. If the debug state isMESSAGE, everything will be filed.MESSAGEandONare of the same levels; the difference between them beingMESSAGEwrites to a file, whereasONwrites to System.out.Debug service uses the property file,
AMConfig.properties, to set the default debug level and the output directory where the debug files will be placed. The properties file is located (usingResourceBundlesemantics) from one of the directories in the CLASSPATH.The following keys are used to configure the Debug service. Possible values for the key 'com.iplanet.services.debug.level' are: off | error | warning | message. The key 'com.iplanet.services.debug.directory' specifies the output directory where the debug files will be created. Optionally, the key 'com.sun.identity.util.debug.provider' may be used to plugin a non-default implementation of the debug service where necessary.
If there is an error reading or loading the properties, Debug service will redirect all debug information tocom.iplanet.services.debug.level com.iplanet.services.debug.directory com.sun.identity.util.debug.provider
System.outIf these properties are changed, the server must be restarted for the changes to take effect.NOTE: Debugging is an IO intensive operation and may hurt application performance when abused. Particularly, note that Java evaluates the arguments to
message()andwarning()even when debugging is turned off. It is recommended that the debug state be checked before invoking anymessage()orwarning()methods to avoid unnecessary argument evaluation and to maximize application performance.
-
-
Field Summary
Fields Modifier and Type Field Description static intERRORflags the state where error debugging is enabled.static intMESSAGEThis state enables debugging of messages, warnings and errors.static intOFFflags the disabled debug state.static intONflags the enabled debug state for warnings, errors and messages.static StringSTR_ERRORflags the state where error debugging is enabled.static StringSTR_MESSAGEThis state enables debugging of messages, warnings and errors.static StringSTR_OFFflags the disabled debug state.static StringSTR_ONflags the enables debug state for warnings, errors and messages.static StringSTR_WARNINGflags the state where warning debugging is enabled, but message debugging is disabled.static intWARNINGflags the state where warning debugging is enabled, but message debugging is disabled.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddestroy()Destroys the debug object, closes the debug file and releases any system resources.voiderror(String msg)Prints error messages only when debug level is greater than DEBUG.OFF.voiderror(String msg, Object... params)A convenience method for error debug statements.voiderror(String msg, Throwable t)Prints error messages only if debug state is greater than Debug.OFF.booleanerrorEnabled()Checks if error debugging is enabled.static DebuggetInstance(String debugName)Gets an existing instance of Debug for the specified debug name or a new one if no such instance already exists.static CollectiongetInstances()Returns a collection of all Debug instances that exist in the system at the current instance.StringgetName()Convinience method to query the name being used for this Debug instance.intgetState()Returns one of the five possible values: Debug.OFF Debug.ERROR Debug.WARNING Debug.MESSAGE Debug.ONvoidmessage(String msg)Prints messages only when the debug state is either Debug.MESSAGE or Debug.ON.voidmessage(String msg, Object... params)A convenience method for message debug statements.voidmessage(String msg, Throwable t)Prints debug and exception messages only when the debug state is either Debug.MESSAGE or Debug.ON.booleanmessageEnabled()Checks if message debugging is enabled.voidresetDebug(String mf)Allows runtime modification of the backend used by this instance.voidsetDebug(int debugType)Sets the debug capabilities based on the values of thedebugTypeargument.voidsetDebug(String debugType)Sets the debug capabilities based on the values of thedebugTypeargument.voidwarning(String msg)Prints warning messages only when debug level is greater than Debug.ERROR.voidwarning(String msg, Object... params)A convenience method for warning debug statements.voidwarning(String msg, Throwable t)Prints warning messages only when debug level is greater than Debug.ERROR.booleanwarningEnabled()Checks if warning debugging is enabled.
-
-
-
Field Detail
-
OFF
public static final int OFF
flags the disabled debug state.- See Also:
- Constant Field Values
-
ERROR
public static final int ERROR
flags the state where error debugging is enabled. When debugging is set to less thanERROR, error debugging is also disabled.- See Also:
- Constant Field Values
-
WARNING
public static final int WARNING
flags the state where warning debugging is enabled, but message debugging is disabled. When debugging is set to less thanWARNING, warning debugging is also disabled.- See Also:
- Constant Field Values
-
MESSAGE
public static final int MESSAGE
This state enables debugging of messages, warnings and errors.- See Also:
- Constant Field Values
-
ON
public static final int ON
flags the enabled debug state for warnings, errors and messages. Printing to a file is disabled. All printing is done on System.out.- See Also:
- Constant Field Values
-
STR_OFF
public static final String STR_OFF
flags the disabled debug state.- See Also:
- Constant Field Values
-
STR_ERROR
public static final String STR_ERROR
flags the state where error debugging is enabled. When debugging is set to less thanERROR, error debugging is also disabled.- See Also:
- Constant Field Values
-
STR_WARNING
public static final String STR_WARNING
flags the state where warning debugging is enabled, but message debugging is disabled. When debugging is set to less thanWARNING, warning debugging is also disabled.- See Also:
- Constant Field Values
-
STR_MESSAGE
public static final String STR_MESSAGE
This state enables debugging of messages, warnings and errors.- See Also:
- Constant Field Values
-
STR_ON
public static final String STR_ON
flags the enables debug state for warnings, errors and messages. Printing to a file is disabled. All printing is done on System.out.- See Also:
- Constant Field Values
-
-
Method Detail
-
getInstance
public static Debug getInstance(String debugName)
Gets an existing instance of Debug for the specified debug name or a new one if no such instance already exists. If a Debug object has to be created, its level is set to the level defined in theAMConfig.propertiesfile. The level can be changed later by usingsetDebug(int)orsetDebug(String)methods.- Parameters:
debugName- name of the debug instances to be created- Returns:
- a Debug instance corresponding to the specified debug name.
-
getInstances
public static Collection getInstances()
Returns a collection of all Debug instances that exist in the system at the current instance. This is a live collection that will be updated as and when new Debug instances are created. Note that if an iterator is used, it could potentially cause aConcurrentModificationExceptionif during the process of iteration, the collection is modified by the system.- Returns:
- a collection of all Debug instances in the system.
-
getName
public String getName()
Convinience method to query the name being used for this Debug instance. The return value of this method is a string exactly equal to the name that was used while creating this instance.- Returns:
- the name of this Debug instance
-
messageEnabled
public boolean messageEnabled()
Checks if message debugging is enabled.NOTE: Debugging is an IO intensive operation and may hurt application performance when abused. Particularly, note that Java evaluates arguments to
message()even when debugging is turned off. It is recommended thatmessageEnabled()be called to check the debug state before invoking anymessage()methods to avoid unnecessary argument evaluation and maximize application performance.- Returns:
trueif message debugging is enabledfalseif message debugging is disabled
-
warningEnabled
public boolean warningEnabled()
Checks if warning debugging is enabled.NOTE: Debugging is an IO intensive operation and may hurt application performance when abused. Particularly, note that Java evaluates arguments to
warning()even when warning debugging is turned off. It is recommended thatwarningEnabled()be called to check the debug state before invoking anywarning()methods to avoid unnecessary argument evaluation and maximize application performance.- Returns:
trueif warning debugging is enabledfalseif warning debugging is disabled
-
errorEnabled
public boolean errorEnabled()
Checks if error debugging is enabled.NOTE: Debugging is an IO intensive operation and may hurt application performance when abused. Particularly, note that Java evaluates arguments to
error()even when error debugging is turned off. It is recommended thaterrorEnabled()be called to check the debug state before invoking anyerror()methods to avoid unnecessary argument evaluation and maximize application performance.- Returns:
trueif error debugging is enabledfalseif error debugging is disabled
-
getState
public int getState()
Returns one of the five possible values:- Debug.OFF
- Debug.ERROR
- Debug.WARNING
- Debug.MESSAGE
- Debug.ON
- Returns:
- the debug level
-
message
public void message(String msg)
Prints messages only when the debug state is either Debug.MESSAGE or Debug.ON.NOTE: Debugging is an IO intensive operation and may hurt application performance when abused. Particularly, note that Java evaluates arguments to
message()even when debugging is turned off. So when the argument to this method involves the String concatenation operator '+' or any other method invocation,messageEnabledMUST be used. It is recommended that the debug state be checked by invokingmessageEnabled()before invoking anymessage()methods to avoid unnecessary argument evaluation and maximize application performance.- Parameters:
msg- debug message.- See Also:
message(String, Throwable)
-
message
public void message(String msg, Throwable t)
Prints debug and exception messages only when the debug state is either Debug.MESSAGE or Debug.ON. If the debug file is not accessible and debugging is enabled, the message along with a time stamp and thread info will be printed on
System.out.This method creates the debug file if does not exist; otherwise it starts appending to the existing debug file. When invoked for the first time on this object, the method writes a line delimiter of '*'s.
Note that the debug file will remain open until
destroy()is invoked. To conserve file resources, you should invokedestroy()explicitly rather than wait for the garbage collector to clean up.NOTE: Debugging is an IO intensive operation and may hurt application performance when abused. Particularly, note that Java evaluates arguments to
message()even when debugging is turned off. It is recommended that the debug state be checked by invokingmessageEnabled()before invoking anymessage()methods to avoid unnecessary argument evaluation and to maximize application performance.- Parameters:
msg- message to be printed. A newline will be appended to the message before printing either toSystem.outor to the debug file. Ifmsgis null, it is ignored.t-Throwable, on whichprintStackTracewill be invoked to print the stack trace. Iftis null, it is ignored.- See Also:
error(String, Throwable)
-
message
public void message(String msg, Object... params)
A convenience method for message debug statements. The message will only be formatted if the debug level is greater thanWARNING, and then it will be formatted using theMessageFormatterclass. The relevantmessagemethod is then called depending on whether the last parameter is an instance ofThrowable.This method is convenient way of issuing warning level debug statements without having to guard the call with a check to
messageEnabled(), as that check is done before evaluating the method parameters.For this optimisation to work properly, this method should not be called using string concatenation. If concatenation is required, it can be achieved using format patterns.
In this way, the only cost to execution is the assembly of the varargs parameter.
- Parameters:
msg- The debug message format, usingMessageFormatterstyle format patterns.params- The parameters to the message, optionally with aThrowableas the last parameter.
-
warning
public void warning(String msg)
Prints warning messages only when debug level is greater than Debug.ERROR.NOTE: Debugging is an IO intensive operation and may hurt application performance when abused. Particularly, note that Java evaluates arguments to
warning()even when debugging is turned off. So when the argument to this method involves the String concatenation operator '+' or any other method invocation,warningEnabledMUST be used. It is recommended that the debug state be checked by invokingwarningEnabled()before invoking anywarning()methods to avoid unnecessary argument evaluation and to maximize application performance.- Parameters:
msg- message to be printed. A newline will be appended to the message before printing either toSystem.outor to the debug file. Ifmsgis null, it is ignored.- See Also:
warning(String, Throwable)
-
warning
public void warning(String msg, Throwable t)
Prints warning messages only when debug level is greater than Debug.ERROR.NOTE: Debugging is an IO intensive operation and may hurt application performance when abused. Particularly, note that Java evaluates arguments to
warning()even when debugging is turned off. It is recommended that the debug state be checked by invokingwarningEnabled()before invoking anywarning()methods to avoid unnecessary argument evaluation and to maximize application performance.If the debug file is not accessible and debugging is enabled, the message along with a time stamp and thread info will be printed on
System.out.This method creates the debug file if does not exist; otherwise it starts appending to the existing debug file. When invoked for the first time on this object, the method writes a line delimiter of '*'s.
Note that the debug file will remain open until
destroy()is invoked. To conserve file resources, you should invokedestroy()explicitly rather than wait for the garbage collector to clean up.- Parameters:
msg- message to be printed. A newline will be appended to the message before printing either toSystem.outor to the debug file. Ifmsgis null, it is ignored.t-Throwable, on whichprintStackTrace()will be invoked to print the stack trace. Iftis null, it is ignored.
-
warning
public void warning(String msg, Object... params)
A convenience method for warning debug statements. The message will only be formatted if the debug level is greater thanERROR, and then it will be formatted using theMessageFormatterclass. The relevantwarningmethod is then called depending on whether the last parameter is an instance ofThrowable.This method is convenient way of issuing warning level debug statements without having to guard the call with a check to
warningEnabled(), as that check is done before evaluating the method parameters.For this optimisation to work properly, this method should not be called using string concatenation. If concatenation is required, it can be achieved using format patterns.
In this way, the only cost to execution is the assembly of the varargs parameter.
- Parameters:
msg- The debug message format, usingMessageFormatterstyle format patterns.params- The parameters to the message, optionally with aThrowableas the last parameter.
-
error
public void error(String msg)
Prints error messages only when debug level is greater than DEBUG.OFF.- Parameters:
msg- message to be printed. A newline will be appended to the message before printing either toSystem.outor to the debug file. Ifmsgis null, it is ignored.- See Also:
error(String, Throwable)
-
error
public void error(String msg, Throwable t)
Prints error messages only if debug state is greater than Debug.OFF. If the debug file is not accessible and debugging is enabled, the message along with a time stamp and thread info will be printed onSystem.out.This method creates the debug file if does not exist; otherwise it starts appending to the existing debug file. When invoked for the first time on this object, the method writes a line delimiter of '*'s.
Note that the debug file will remain open until
destroy()is invoked. To conserve file resources, you should invokedestroy()explicitly rather than wait for the garbage collector to clean up.- Parameters:
msg- message to be printed. A newline will be appended to the message before printing either toSystem.outor to the debug file. Ifmsgis null, it is ignored.t-Throwable, on whichprintStackTrace()will be invoked to print the stack trace. Iftis null, it is ignored.
-
error
public void error(String msg, Object... params)
A convenience method for error debug statements. The message will only be formatted if the debug level is greater thanOFF, and then it will be formatted using theMessageFormatterclass. The relevanterrormethod is then called depending on whether the last parameter is an instance ofThrowable.This method is convenient way of issuing warning level debug statements without having to guard the call with a check to
errorEnabled(), as that check is done before evaluating the method parameters.For this optimisation to work properly, this method should not be called using string concatenation. If concatenation is required, it can be achieved using format patterns.
In this way, the only cost to execution is the assembly of the varargs parameter.
- Parameters:
msg- The debug message format, usingMessageFormatterstyle format patterns.params- The parameters to the message, optionally with aThrowableas the last parameter.
-
setDebug
public void setDebug(int debugType)
Sets the debug capabilities based on the values of thedebugTypeargument.- Parameters:
debugType- is any one of five possible values:Debug.OFFDebug.ERRORDebug.WARNINGDebug.MESSAGEDebug.ON
-
resetDebug
public void resetDebug(String mf)
Allows runtime modification of the backend used by this instance. by resetting the debug instance to reinitialize itself.- Parameters:
mf- merge flag - on for creating a single debug file.
-
setDebug
public void setDebug(String debugType)
Sets the debug capabilities based on the values of thedebugTypeargument.- Parameters:
debugType- is any one of the following possible values:Debug.STR_OFFDebug.STR_ERRORDebug.STR_WARNINGDebug.STR_MESSAGEDebug.STR_ON
-
destroy
public void destroy()
Destroys the debug object, closes the debug file and releases any system resources. Note that the debug file will remain open untildestroy()is invoked. To conserve file resources, you should invokedestroy()explicitly rather than wait for the garbage collector to clean up.If this object is accessed after
destroy()has been invoked, the results are undefined.
-
-