]> piware.de Git - learn-rust.git/commitdiff
tokio-tutorial-mini-redis: Add logging
authorMartin Pitt <martin@piware.de>
Sun, 18 Sep 2022 17:46:12 +0000 (19:46 +0200)
committerMartin Pitt <martin@piware.de>
Sun, 18 Sep 2022 17:46:12 +0000 (19:46 +0200)
tokio-tutorial-mini-redis/Cargo.toml
tokio-tutorial-mini-redis/src/bin/server.rs

index 4a82df3fbcaa6e4285e78f9b8aae8eea3ad85968..b6caa1beb4f93e33723cd3ca0a0997e36156603d 100644 (file)
@@ -7,5 +7,7 @@ edition = "2021"
 
 [dependencies]
 bytes = "1"
-tokio = { version = "1", features = ["full"] }
+env_logger = "0.9"
+log = "0.4"
 mini-redis = "0.4"
+tokio = { version = "1", features = ["full"] }
index 2488f033ead6e2808c08fe6f4499e3b0818f9d15..441ea1881c90007acb12897eb0fb89a060948b5c 100644 (file)
@@ -8,14 +8,20 @@ use tokio::net::{TcpListener, TcpStream};
 
 type Db = Arc<Mutex<HashMap<String, Bytes>>>;
 
+const LISTEN: &str = "127.0.0.1:6379";
+
 #[tokio::main]
 async fn main() {
-    let listener = TcpListener::bind("127.0.0.1:6379").await.unwrap();
+    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("debug")).init();
+
+    let listener = TcpListener::bind(LISTEN).await.unwrap();
+    log::info!("Listening on {}", LISTEN);
     let db: Db = Arc::new(Mutex::new(HashMap::new()));
 
     loop {
         // The second item contains the IP and port of the new connection
-        let (socket, _) = listener.accept().await.unwrap();
+        let (socket, addr) = listener.accept().await.unwrap();
+        log::debug!("got connection from {:?}", addr);
         let db_i = db.clone();
         tokio::spawn(async move { process(socket, db_i).await });
     }
@@ -29,12 +35,15 @@ async fn process(socket: TcpStream, db: Db) {
             Set(cmd) => {
                 // The value is stored as `Vec<u8>`
                 db.lock().unwrap().insert(cmd.key().to_string(), cmd.value().clone());
+                log::debug!("Set {} → {:?}", &cmd.key(), &cmd.value());
                 Frame::Simple("OK".to_string())
             }
             Get(cmd) => {
                 if let Some(value) = db.lock().unwrap().get(cmd.key()) {
+                    log::debug!("Get {} → {:?}", &cmd.key(), &value);
                     Frame::Bulk(value.clone())
                 } else {
+                    log::debug!("Get {} unknown key", &cmd.key());
                     Frame::Null
                 }
             }