Class Logger
- All Implemented Interfaces:
AutoCloseable,LoggerInterface
This class provides a custom logger functionality
in Java which wraps RocksDB logging facilities.
Using this class RocksDB can log with common Java logging APIs like Log4j or Slf4j without keeping database logs in the filesystem.
PerformanceThere are certain performance penalties using a Java
Logger implementation within production code.
A log level can be set using Options or
setInfoLogLevel(InfoLogLevel). The set log level
influences the underlying native code. Each log message is
checked against the set log level and if the log level is more
verbose as the set log level, native allocations will be made
and data structures are allocated.
Every log message which will be emitted by native code will
trigger expensive native to Java transitions. So the preferred
setting for production use is either
InfoLogLevel.ERROR_LEVEL or
InfoLogLevel.FATAL_LEVEL.
-
Field Summary
Fields inherited from class org.rocksdb.RocksCallbackObject
nativeHandle_Fields inherited from class org.rocksdb.AbstractImmutableNativeReference
owningHandle_ -
Constructor Summary
ConstructorsConstructorDescriptionDeprecated.Logger(InfoLogLevel logLevel) AbstractLogger constructor.Deprecated.UseLogger(InfoLogLevel)instead, e.g. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidWe overrideRocksCallbackObject.disposeInternal()as disposing of a rocksdb::LoggerJniCallback requires a slightly different approach as it is a std::shared_ptr.final LoggerTypeGet the type of this logger.longGet the underlying Native Handle.Get the log levelprotected byteinfoLogLevel(long handle) protected longinitializeNative(long... nativeParameterHandles) Construct the Native C++ object which will callback to our object methodsprotected abstract voidlog(InfoLogLevel logLevel, String logMsg) protected longnewLogger(long logLevel) protected voidsetInfoLogLevel(long handle, byte logLevel) voidsetInfoLogLevel(InfoLogLevel logLevel) Set the log level.Methods inherited from class org.rocksdb.AbstractImmutableNativeReference
close, disOwnNativeHandle, isOwningHandle
-
Constructor Details
-
Logger
Deprecated.UseLogger(InfoLogLevel)instead, e.g.new Logger(options.infoLogLevel()).AbstractLogger constructor.
Important: the log level set within the
Optionsinstance will be used as maximum log level of RocksDB.- Parameters:
options-Optionsinstance.
-
Logger
Deprecated.UseLogger(InfoLogLevel)instead, e.g.new Logger(dbOptions.infoLogLevel()).AbstractLogger constructor.
Important: the log level set within the
DBOptionsinstance will be used as maximum log level of RocksDB.- Parameters:
dboptions-DBOptionsinstance.
-
Logger
AbstractLogger constructor.
- Parameters:
logLevel- the log level.
-
-
Method Details
-
initializeNative
protected long initializeNative(long... nativeParameterHandles) Description copied from class:RocksCallbackObjectConstruct the Native C++ object which will callback to our object methods- Specified by:
initializeNativein classRocksCallbackObject- Parameters:
nativeParameterHandles- An array of native handles for any parameter objects that are needed during construction- Returns:
- The native handle of the C++ object which will callback to us
-
setInfoLogLevel
Description copied from interface:LoggerInterfaceSet the log level.- Specified by:
setInfoLogLevelin interfaceLoggerInterface- Parameters:
logLevel- the level at which to log.
-
infoLogLevel
Description copied from interface:LoggerInterfaceGet the log level- Specified by:
infoLogLevelin interfaceLoggerInterface- Returns:
- the level at which to log.
-
getNativeHandle
public long getNativeHandle()Description copied from interface:LoggerInterfaceGet the underlying Native Handle.- Specified by:
getNativeHandlein interfaceLoggerInterface- Returns:
- the native handle.
-
getLoggerType
Description copied from interface:LoggerInterfaceGet the type of this logger.- Specified by:
getLoggerTypein interfaceLoggerInterface- Returns:
- the type of this logger.
-
log
-
newLogger
protected long newLogger(long logLevel) -
setInfoLogLevel
protected void setInfoLogLevel(long handle, byte logLevel) -
infoLogLevel
protected byte infoLogLevel(long handle) -
disposeInternal
protected void disposeInternal()We overrideRocksCallbackObject.disposeInternal()as disposing of a rocksdb::LoggerJniCallback requires a slightly different approach as it is a std::shared_ptr.- Overrides:
disposeInternalin classRocksCallbackObject
-
Logger(InfoLogLevel)instead, e.g.