GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — Logging in RocksJava Logging in RocksJava
Adam Retter edited this page
By default, a RocksDB database will not perform any logging. However, as a RocksJava user, you still might be interested in compaction statistics, write stalls, flush times, etc. RocksJava supports two mechanisms for logging: Java-based logging, and native logging:
Once you have a RocksJava
For example an SLF4J logging framework bridge: import org.rocksdb.InfoLogLevel; import org.rocksdb.Logger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class RocksDbSlf4jLogger extends Logger { private static final Logger logger = LoggerFactory.getLogger(RocksDbSlf4jLogger.class); public RocksDbSlf4jLogger(InfoLogLevel logLevel) { super(logLevel); } @Override protected void log(InfoLogLevel logLevel, String message) { switch (logLevel) { case FATAL_LEVEL: case ERROR_LEVEL: logger.error(message); break; case WARN_LEVEL: logger.warn(message); break; case INFO_LEVEL: logger.info(message); break; case DEBUG_LEVEL: logger.debug(message); break; default: log4jLogger.trace(message); } } } Then to use this: try (Logger slf4jLogger = new RocksDbSlf4jLogger(InfoLogLevel.INFO)) { options.setLogger(slf4jLogger); } Important Your Logger will have an underlying C++ abstraction allocated to it in memory (as does every You can configure a Native Logger with the same You can configure the try (StdErrLogger stdErrLogger = new StdErrLogger(InfoLogLevel.DEBUG_LEVEL)) { options.setLogger(stdErrLogger); } If you are opening multiple RocksDB databases from the same RocksJava process, it will be hard to differentiate which logs belong to which RocksDB database. If you were writing your own Java-based logger, you could embed the database name in your logger. To achieve similar functionality with native loggers, you can create a try (StdErrLogger stdErrLoggerForFooDB = new StdErrLogger(InfoLogLevel.DEBUG_LEVEL, "[Foo DB] ")) { fooOptions.setLogger(stdErrLoggerForFooDB); RocksDB.open(fooOptions, ...) } try (StdErrLogger stdErrLoggerForBarDB = new StdErrLogger(InfoLogLevel.DEBUG_LEVEL, "[Bar DB] ")) { barOptions.setLogger(stdErrLoggerForBarDB); RocksDB.open(barOptions, ...) } Contents
Clone this wiki locally |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |