dap: logging using fern
This commit is contained in:
parent
0f6e81b85b
commit
fd709bc56d
4 changed files with 22 additions and 13 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -327,6 +327,7 @@ name = "helix-dap"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"fern",
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
|
|
@ -18,3 +18,6 @@ serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
tokio = { version = "1.9", features = ["rt", "rt-multi-thread", "io-util", "io-std", "time", "process", "macros", "fs", "parking_lot"] }
|
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]
|
#[tokio::main]
|
||||||
pub async fn main() -> Result<()> {
|
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)?;
|
let mut client = Client::start("nc", vec!["127.0.0.1", "7777"], 0)?;
|
||||||
|
|
||||||
println!("init: {:?}", client.initialize().await);
|
println!("init: {:?}", client.initialize().await);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::{Error, Result};
|
use crate::{Error, Result};
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
use log::error;
|
use log::{error, info};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
@ -123,8 +123,7 @@ impl Transport {
|
||||||
reader.read_exact(&mut content).await?;
|
reader.read_exact(&mut content).await?;
|
||||||
let msg = std::str::from_utf8(&content).context("invalid utf8 from server")?;
|
let msg = std::str::from_utf8(&content).context("invalid utf8 from server")?;
|
||||||
|
|
||||||
// TODO: `info!` here
|
info!("<- DAP {}", msg);
|
||||||
println!("<- DAP {}", msg);
|
|
||||||
|
|
||||||
// try parsing as output (server response) or call (server request)
|
// try parsing as output (server response) or call (server request)
|
||||||
let output: serde_json::Result<Payload> = serde_json::from_str(msg);
|
let output: serde_json::Result<Payload> = serde_json::from_str(msg);
|
||||||
|
@ -153,8 +152,7 @@ impl Transport {
|
||||||
server_stdin: &mut BufWriter<ChildStdin>,
|
server_stdin: &mut BufWriter<ChildStdin>,
|
||||||
request: String,
|
request: String,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
// TODO: `info!` here
|
info!("-> DAP {}", request);
|
||||||
println!("-> DAP {}", request);
|
|
||||||
|
|
||||||
// send the headers
|
// send the headers
|
||||||
server_stdin
|
server_stdin
|
||||||
|
@ -181,8 +179,7 @@ impl Transport {
|
||||||
request_seq,
|
request_seq,
|
||||||
..
|
..
|
||||||
}) => {
|
}) => {
|
||||||
// TODO: `info!` here
|
info!("<- DAP success ({}, in response to {})", seq, request_seq);
|
||||||
println!("<- DAP success ({}, in response to {})", seq, request_seq);
|
|
||||||
if let Payload::Response(val) = msg {
|
if let Payload::Response(val) = msg {
|
||||||
(request_seq, Ok(val))
|
(request_seq, Ok(val))
|
||||||
} else {
|
} else {
|
||||||
|
@ -197,8 +194,7 @@ impl Transport {
|
||||||
command,
|
command,
|
||||||
..
|
..
|
||||||
}) => {
|
}) => {
|
||||||
// TODO: `error!` here
|
error!(
|
||||||
println!(
|
|
||||||
"<- DAP error {:?} ({:?}) for command #{} {}",
|
"<- DAP error {:?} ({:?}) for command #{} {}",
|
||||||
message, body, request_seq, command
|
message, body, request_seq, command
|
||||||
);
|
);
|
||||||
|
@ -212,16 +208,14 @@ impl Transport {
|
||||||
ref seq,
|
ref seq,
|
||||||
..
|
..
|
||||||
}) => {
|
}) => {
|
||||||
// TODO: `info!` here
|
info!("<- DAP request {} #{}", command, seq);
|
||||||
println!("<- DAP request {} #{}", command, seq);
|
|
||||||
client_tx.send(msg).expect("Failed to send");
|
client_tx.send(msg).expect("Failed to send");
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
Payload::Event(Event {
|
Payload::Event(Event {
|
||||||
ref event, ref seq, ..
|
ref event, ref seq, ..
|
||||||
}) => {
|
}) => {
|
||||||
// TODO: `info!` here
|
info!("<- DAP event {} #{}", event, seq);
|
||||||
println!("<- DAP event {} #{}", event, seq);
|
|
||||||
client_tx.send(msg).expect("Failed to send");
|
client_tx.send(msg).expect("Failed to send");
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue