Skip to content

Commit

Permalink
Allow setting stderr logger
Browse files Browse the repository at this point in the history
  • Loading branch information
zaidoon1 committed Mar 20, 2024
1 parent 2316fa7 commit d40acc6
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/db_options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3260,6 +3260,22 @@ impl Options {
}
}

/// Prints logs to stderr for faster debugging
/// See: https://github.com/facebook/rocksdb/wiki/Logger for more info
pub fn set_stderr_logger(&mut self, log_level: LogLevel, prefix: Option<impl CStrLike>) {
let mut prefix_ptr = std::ptr::null();
if let Some(prefix) = prefix {
let prefix = prefix.into_c_string().unwrap();
prefix_ptr = prefix.as_ptr();
}

unsafe {
let logger = ffi::rocksdb_logger_create_stderr_logger(log_level as c_int, prefix_ptr);

ffi::rocksdb_options_set_info_log(self.inner, logger);
}
}

/// Sets the threshold at which all writes will be slowed down to at least delayed_write_rate if estimated
/// bytes needed to be compaction exceed this threshold.
///
Expand Down
48 changes: 48 additions & 0 deletions tests/test_db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1601,3 +1601,51 @@ fn ratelimiter_with_mode_test() {
db.wait_for_compact(&wait_for_compact_opts).unwrap()
}
}

#[test]
fn set_stderr_logger_test() {
let path = DBPath::new("_rust_rocksdb_set_stderr_logger_test");
{
let mut opts = Options::default();
opts.create_if_missing(true);
opts.create_missing_column_families(true);
opts.set_stderr_logger(rust_rocksdb::LogLevel::Info, Some("db"));

let cfs = vec!["cf1"];
let db = DB::open_cf(&opts, &path, cfs).unwrap();
let cf1 = db.cf_handle("cf1").unwrap();
db.put_cf(&cf1, b"k1", b"v1").unwrap();
db.put_cf(&cf1, b"k2", b"v2").unwrap();
db.put_cf(&cf1, b"k3", b"v3").unwrap();
db.put_cf(&cf1, b"k4", b"v4").unwrap();
db.put_cf(&cf1, b"k5", b"v5").unwrap();

db.put(b"k1", b"v1").unwrap();
db.put(b"k2", b"v2").unwrap();
db.put(b"k3", b"v3").unwrap();
db.put(b"k4", b"v4").unwrap();
db.put(b"k5", b"v5").unwrap();
}

{
let mut opts = Options::default();
opts.create_if_missing(true);
opts.create_missing_column_families(true);
opts.set_stderr_logger(rust_rocksdb::LogLevel::Info, None::<&str>);

let cfs = vec!["cf1"];
let db = DB::open_cf(&opts, &path, cfs).unwrap();
let cf1 = db.cf_handle("cf1").unwrap();
db.put_cf(&cf1, b"k1", b"v1").unwrap();
db.put_cf(&cf1, b"k2", b"v2").unwrap();
db.put_cf(&cf1, b"k3", b"v3").unwrap();
db.put_cf(&cf1, b"k4", b"v4").unwrap();
db.put_cf(&cf1, b"k5", b"v5").unwrap();

db.put(b"k1", b"v1").unwrap();
db.put(b"k2", b"v2").unwrap();
db.put(b"k3", b"v3").unwrap();
db.put(b"k4", b"v4").unwrap();
db.put(b"k5", b"v5").unwrap();
}
}

0 comments on commit d40acc6

Please sign in to comment.