feat: use Logger for logging
This commit is contained in:
9
glue/Cargo.lock
generated
9
glue/Cargo.lock
generated
@@ -504,9 +504,9 @@ checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
|
||||
|
||||
[[package]]
|
||||
name = "toad"
|
||||
version = "0.17.3"
|
||||
version = "0.17.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5d4000090e5f6d1380e1a4bfb9a5428019cb7a4374b3663792ef7965384968fc"
|
||||
checksum = "4eeb47a7e30efe198acc91ee919d420b478d9874c9362611d61f2ad9a3d27848"
|
||||
dependencies = [
|
||||
"embedded-time",
|
||||
"log",
|
||||
@@ -582,12 +582,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "toad-jni"
|
||||
version = "0.11.0"
|
||||
version = "0.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "125f835c70283545b5840dff39d9bd132324d929041d4eaec1ed9378f08ac166"
|
||||
checksum = "93571aa0e40745d04eff12007637f0ed01ea1afbe112b1eca19a11fe30f638f6"
|
||||
dependencies = [
|
||||
"embedded-time",
|
||||
"jni",
|
||||
"log",
|
||||
"nb",
|
||||
"no-std-net",
|
||||
"tinyvec",
|
||||
|
||||
@@ -14,8 +14,8 @@ e2e = []
|
||||
[dependencies]
|
||||
jni = "0.21.1"
|
||||
nb = "1"
|
||||
toad = "0.17.3"
|
||||
toad-jni = "0.11.0"
|
||||
toad = "0.17.4"
|
||||
toad-jni = "0.13.0"
|
||||
no-std-net = "0.6"
|
||||
toad-msg = "0.18.1"
|
||||
tinyvec = {version = "1.5", default_features = false, features = ["rustc_1_55"]}
|
||||
|
||||
@@ -13,6 +13,7 @@ use toad::retry::{Attempts, Strategy};
|
||||
use toad::time::Millis;
|
||||
use toad_jni::java::net::InetSocketAddress;
|
||||
use toad_jni::java::nio::channels::{DatagramChannel, PeekableDatagramChannel};
|
||||
use toad_jni::java::util::Optional;
|
||||
use toad_jni::java::{self, Object};
|
||||
|
||||
use crate::mem::{Shared, SharedMemoryRegion};
|
||||
@@ -39,7 +40,7 @@ impl Toad {
|
||||
}
|
||||
|
||||
fn init_impl(e: &mut java::Env, cfg: Config, channel: PeekableDatagramChannel) -> i64 {
|
||||
let r = || Runtime::new(cfg.to_toad(e), channel);
|
||||
let r = || Runtime::new(&mut java::env(), cfg.log_level(e), cfg.to_toad(e), channel);
|
||||
unsafe { crate::mem::Shared::init(r).addr() as i64 }
|
||||
}
|
||||
|
||||
@@ -135,13 +136,20 @@ impl Config {
|
||||
RUNTIME_CONFIG_CONCURRENCY.get(e, self).to_rust(e)
|
||||
}
|
||||
|
||||
pub fn log_level(&self, e: &mut java::Env) -> java::util::logging::Level {
|
||||
static LOG_LEVEL: java::Method<Config, fn() -> java::util::logging::Level> =
|
||||
java::Method::new("logLevel");
|
||||
LOG_LEVEL.invoke(e, self)
|
||||
}
|
||||
|
||||
pub fn msg(&self, e: &mut java::Env) -> Msg {
|
||||
static RUNTIME_CONFIG_MSG: java::Method<Config, fn() -> Msg> = java::Method::new("msg");
|
||||
RUNTIME_CONFIG_MSG.invoke(e, self)
|
||||
}
|
||||
|
||||
pub fn new(e: &mut java::Env, c: toad::config::Config) -> Self {
|
||||
static CTOR: java::Constructor<Config, fn(ffi::u8, Msg)> = java::Constructor::new();
|
||||
static CTOR: java::Constructor<Config, fn(Optional<java::util::logging::Level>, ffi::u8, Msg)> =
|
||||
java::Constructor::new();
|
||||
|
||||
let con = Con::new(e,
|
||||
c.msg.con.unacked_retry_strategy,
|
||||
@@ -157,7 +165,8 @@ impl Config {
|
||||
|
||||
let concurrency = ffi::u8::from_rust(e, c.max_concurrent_requests);
|
||||
|
||||
let jcfg = CTOR.invoke(e, concurrency, msg);
|
||||
let log_level: Optional<java::util::logging::Level> = Optional::empty(e);
|
||||
let jcfg = CTOR.invoke(e, log_level, concurrency, msg);
|
||||
jcfg
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,8 @@ mod runtime {
|
||||
use toad_jni::java::io::IOException;
|
||||
use toad_jni::java::lang::System;
|
||||
use toad_jni::java::nio::channels::PeekableDatagramChannel;
|
||||
use toad_jni::java::{self, Object};
|
||||
use toad_jni::java::util::logging::{ConsoleHandler, Level, Logger};
|
||||
use toad_jni::java::{self, Object, ResultExt, Signature};
|
||||
use toad_msg::{OptNumber, OptValue};
|
||||
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
@@ -37,14 +38,28 @@ mod runtime {
|
||||
config: Config,
|
||||
channel: PeekableDatagramChannel,
|
||||
clock: toad::std::Clock,
|
||||
logger: Logger,
|
||||
}
|
||||
|
||||
impl Runtime {
|
||||
pub fn new(config: Config, channel: PeekableDatagramChannel) -> Self {
|
||||
pub fn new(e: &mut java::Env,
|
||||
log_level: Level,
|
||||
config: Config,
|
||||
channel: PeekableDatagramChannel)
|
||||
-> Self {
|
||||
let handler = ConsoleHandler::new(e);
|
||||
handler.set_level(e, log_level);
|
||||
|
||||
let logger = Logger::get_logger(e, "dev.toad");
|
||||
logger.use_parent_handlers(e, false);
|
||||
logger.add_handler(e, handler.to_handler());
|
||||
logger.set_level(e, log_level);
|
||||
|
||||
Self { steps: Default::default(),
|
||||
config,
|
||||
channel,
|
||||
clock: toad::std::Clock::new() }
|
||||
clock: toad::std::Clock::new(),
|
||||
logger }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,9 +69,8 @@ mod runtime {
|
||||
|
||||
fn log(&self, level: log::Level, msg: toad::todo::String<1000>) -> Result<(), Self::Error> {
|
||||
let mut e = java::env();
|
||||
let e = &mut e;
|
||||
let (level, msg) = (level.to_string().downcast(e), msg.as_str().to_string().downcast(e));
|
||||
System::out(e).printf(e, "[%s]: %s", vec![level, msg]);
|
||||
self.logger
|
||||
.log(&mut e, Level::from_log_level(level), msg.as_str());
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user