dap: logging using fern

imgbot
Dmitry Sharshakov 3 years ago committed by Blaž Hrastnik
parent 0f6e81b85b
commit fd709bc56d

1
Cargo.lock generated

@ -327,6 +327,7 @@ name = "helix-dap"
version = "0.3.0"
dependencies = [
"anyhow",
"fern",
"log",
"serde",
"serde_json",

@ -18,3 +18,6 @@ serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
thiserror = "1.0"
tokio = { version = "1.9", features = ["rt", "rt-multi-thread", "io-util", "io-std", "time", "process", "macros", "fs", "parking_lot"] }
[dev-dependencies]
fern = "0.6"

@ -2,6 +2,17 @@ use helix_dap::{Client, Result, SourceBreakpoint};
#[tokio::main]
pub async fn main() -> Result<()> {
let base_config = fern::Dispatch::new().level(log::LevelFilter::Info);
let stderr_config = fern::Dispatch::new()
.format(|out, message, record| out.finish(format_args!("[{}] {}", record.level(), message)))
.chain(std::io::stderr());
base_config
.chain(stderr_config)
.apply()
.expect("Failed to set up logging");
let mut client = Client::start("nc", vec!["127.0.0.1", "7777"], 0)?;
println!("init: {:?}", client.initialize().await);

@ -1,6 +1,6 @@
use crate::{Error, Result};
use anyhow::Context;
use log::error;
use log::{error, info};
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
@ -123,8 +123,7 @@ impl Transport {
reader.read_exact(&mut content).await?;
let msg = std::str::from_utf8(&content).context("invalid utf8 from server")?;
// TODO: `info!` here
println!("<- DAP {}", msg);
info!("<- DAP {}", msg);
// try parsing as output (server response) or call (server request)
let output: serde_json::Result<Payload> = serde_json::from_str(msg);
@ -153,8 +152,7 @@ impl Transport {
server_stdin: &mut BufWriter<ChildStdin>,
request: String,
) -> Result<()> {
// TODO: `info!` here
println!("-> DAP {}", request);
info!("-> DAP {}", request);
// send the headers
server_stdin
@ -181,8 +179,7 @@ impl Transport {
request_seq,
..
}) => {
// TODO: `info!` here
println!("<- DAP success ({}, in response to {})", seq, request_seq);
info!("<- DAP success ({}, in response to {})", seq, request_seq);
if let Payload::Response(val) = msg {
(request_seq, Ok(val))
} else {
@ -197,8 +194,7 @@ impl Transport {
command,
..
}) => {
// TODO: `error!` here
println!(
error!(
"<- DAP error {:?} ({:?}) for command #{} {}",
message, body, request_seq, command
);
@ -212,16 +208,14 @@ impl Transport {
ref seq,
..
}) => {
// TODO: `info!` here
println!("<- DAP request {} #{}", command, seq);
info!("<- DAP request {} #{}", command, seq);
client_tx.send(msg).expect("Failed to send");
return Ok(());
}
Payload::Event(Event {
ref event, ref seq, ..
}) => {
// TODO: `info!` here
println!("<- DAP event {} #{}", event, seq);
info!("<- DAP event {} #{}", event, seq);
client_tx.send(msg).expect("Failed to send");
return Ok(());
}

Loading…
Cancel
Save