on master help sign in
dap: logging using fern
commitfd709bc56dae91fdd183486360dd08ac535c5c5b authorDmitry Sharshakov <d3dx12.xx@gmail.com> dateThu 12 Aug 2021, 16:45 (5 years ago) parent0f6e81b
4 files changed+22−13
Cargo.lock+1 helix-dap/Cargo.toml+3 helix-dap/examples/dap-basic.rs+11 helix-dap/src/transport.rs+7−13
Cargo.lock+1
@@ -327,6 +327,7 @@ name = "helix-dap"
327327version = "0.3.0"
328328dependencies = [
329329 "anyhow",
330+ "fern",
330331 "log",
331332 "serde",
332333 "serde_json",
helix-dap/Cargo.toml+3
@@ -18,3 +18,6 @@ serde = { version = "1.0", features = ["derive"] }
1818serde_json = "1.0"
1919thiserror = "1.0"
2020tokio = { version = "1.9", features = ["rt", "rt-multi-thread", "io-util", "io-std", "time", "process", "macros", "fs", "parking_lot"] }
21+
22+[dev-dependencies]
23+fern = "0.6"
helix-dap/examples/dap-basic.rs+11
@@ -2,6 +2,17 @@ use helix_dap::{Client, Result, SourceBreakpoint};
22
33#[tokio::main]
44pub async fn main() -> Result<()> {
5+ let base_config = fern::Dispatch::new().level(log::LevelFilter::Info);
6+
7+ let stderr_config = fern::Dispatch::new()
8+ .format(|out, message, record| out.finish(format_args!("[{}] {}", record.level(), message)))
9+ .chain(std::io::stderr());
10+
11+ base_config
12+ .chain(stderr_config)
13+ .apply()
14+ .expect("Failed to set up logging");
15+
516 let mut client = Client::start("nc", vec!["127.0.0.1", "7777"], 0)?;
617
718 println!("init: {:?}", client.initialize().await);
helix-dap/src/transport.rs+7−13
@@ -1,6 +1,6 @@
11use crate::{Error, Result};
22use anyhow::Context;
3−use log::error;
3+use log::{error, info};
44use serde::{Deserialize, Serialize};
55use serde_json::Value;
66use std::collections::HashMap;
@@ -123,8 +123,7 @@ impl Transport {
123123 reader.read_exact(&mut content).await?;
124124 let msg = std::str::from_utf8(&content).context("invalid utf8 from server")?;
125125
126− // TODO: `info!` here
127− println!("<- DAP {}", msg);
126+ info!("<- DAP {}", msg);
128127
129128 // try parsing as output (server response) or call (server request)
130129 let output: serde_json::Result<Payload> = serde_json::from_str(msg);
@@ -153,8 +152,7 @@ impl Transport {
153152 server_stdin: &mut BufWriter<ChildStdin>,
154153 request: String,
155154 ) -> Result<()> {
156− // TODO: `info!` here
157− println!("-> DAP {}", request);
155+ info!("-> DAP {}", request);
158156
159157 // send the headers
160158 server_stdin
@@ -181,8 +179,7 @@ impl Transport {
181179 request_seq,
182180 ..
183181 }) => {
184− // TODO: `info!` here
185− println!("<- DAP success ({}, in response to {})", seq, request_seq);
182+ info!("<- DAP success ({}, in response to {})", seq, request_seq);
186183 if let Payload::Response(val) = msg {
187184 (request_seq, Ok(val))
188185 } else {
@@ -197,8 +194,7 @@ impl Transport {
197194 command,
198195 ..
199196 }) => {
200− // TODO: `error!` here
201− println!(
197+ error!(
202198 "<- DAP error {:?} ({:?}) for command #{} {}",
203199 message, body, request_seq, command
204200 );
@@ -212,16 +208,14 @@ impl Transport {
212208 ref seq,
213209 ..
214210 }) => {
215− // TODO: `info!` here
216− println!("<- DAP request {} #{}", command, seq);
211+ info!("<- DAP request {} #{}", command, seq);
217212 client_tx.send(msg).expect("Failed to send");
218213 return Ok(());
219214 }
220215 Payload::Event(Event {
221216 ref event, ref seq, ..
222217 }) => {
223− // TODO: `info!` here
224− println!("<- DAP event {} #{}", event, seq);
218+ info!("<- DAP event {} #{}", event, seq);
225219 client_tx.send(msg).expect("Failed to send");
226220 return Ok(());
227221 }