Package org.apache.sis.util.logging
Class PerformanceLevel
-
- All Implemented Interfaces:
Serializable
public final class PerformanceLevel extends Level
Logging levels for measurements of execution time. Different logging levels -SLOW
,SLOWER
andSLOWEST
- are provided in order to log only the events taking more than some time duration. For example the console could log only the slowest events, while a file could log all events considered slow.Every levels defined in this class have a value between the
Level.FINE
andLevel.CONFIG
values. Consequently performance logging are disabled by default, and enabling them imply enabling configuration logging too. This is done that way because the configuration typically have a significant impact on performance.Enabling performance loggingPerformance logging can be enabled in various ways. Among others:- The
$JAVA_HOME/lib/logging.properties
file can be edited in order to log messages at theFINE
level, at least for the packages of interest. - The
Logger.setLevel(Level)
can be invoked, together withHandler.setLevel(Level)
on all relevant logging targets (console or file, etc.). - The
MonolineFormatter.install(Logger, Level)
convenience method can be invoked.
- Since:
- 0.3
- See Also:
- Serialized Form
Defined in the
sis-utility
module
-
-
Field Summary
Fields Modifier and Type Field Description static PerformanceLevel
PERFORMANCE
The level for logging all time measurements, regardless of their duration.static PerformanceLevel
SLOW
The level for logging relatively slow events.static PerformanceLevel
SLOWER
The level for logging only events slower than the ones logged at theSLOW
level.static PerformanceLevel
SLOWEST
The level for logging only slowest events.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static PerformanceLevel
forDuration(long duration, TimeUnit unit)
Returns the level to use for logging an event of the given duration.long
getMinDuration(TimeUnit unit)
Returns the minimal duration for logging an event at this level.void
setMinDuration(long duration, TimeUnit unit)
Sets the minimal duration for logging an event at this level.-
Methods inherited from class Level
equals, getLocalizedName, getName, getResourceBundleName, hashCode, intValue, parse, toString
-
-
-
-
Field Detail
-
PERFORMANCE
public static final PerformanceLevel PERFORMANCE
The level for logging all time measurements, regardless of their duration. The value of this level is 600.
-
SLOW
public static final PerformanceLevel SLOW
The level for logging relatively slow events. By default, only events having an execution time equals or greater than 0.1 second are logged at this level. However this threshold can be changed by a call toSLOW.setMinDuration(long, TimeUnit)
.
-
SLOWER
public static final PerformanceLevel SLOWER
The level for logging only events slower than the ones logged at theSLOW
level. By default, only events having an execution time equals or greater than 1 second are logged at this level. However this threshold can be changed by a call toSLOWER.setMinDuration(long, TimeUnit)
.
-
SLOWEST
public static final PerformanceLevel SLOWEST
The level for logging only slowest events. By default, only events having an execution time equals or greater than 5 seconds are logged at this level. However this threshold can be changed by a call toSLOWEST.setMinDuration(long, TimeUnit)
.
-
-
Method Detail
-
forDuration
public static PerformanceLevel forDuration(long duration, TimeUnit unit)
Returns the level to use for logging an event of the given duration.- Parameters:
duration
- the event duration.unit
- the unit of the given duration value.- Returns:
- the level to use for logging an event of the given duration.
-
getMinDuration
public long getMinDuration(TimeUnit unit)
Returns the minimal duration for logging an event at this level.- Parameters:
unit
- the unit in which to express the minimal duration.- Returns:
- the minimal duration in the given unit.
-
setMinDuration
@Configuration public void setMinDuration(long duration, TimeUnit unit) throws IllegalArgumentException
Sets the minimal duration for logging an event at this level. Invoking this method may have an indirect impact of other performance levels:- If the given duration is longer than the duration of slower levels, then the later are also set to the given duration.
- If the given duration is shorter than the duration of faster levels, then the later are also set to the given duration.
Usage note: The duration of thePERFORMANCE
level can not be modified: it is always zero. However invoking this method on thePERFORMANCE
field will ensure that everySLOW*
levels will have at least the given duration.- Parameters:
duration
- the minimal duration.unit
- the unit of the given duration value.- Throws:
IllegalArgumentException
- if the given duration is negative.
-
-