mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-01 21:13:09 +00:00
fix error log reporting
This commit is contained in:
committed by
Aiden McClelland
parent
ba402d018a
commit
3d3a7500a2
@@ -24,26 +24,51 @@ impl<S: Subscriber> Layer<S> for SharingLayer {
|
|||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
#[serde(rename_all = "kebab-case")]
|
#[serde(rename_all = "kebab-case")]
|
||||||
struct LogRequest<'a> {
|
struct LogRequest<'a> {
|
||||||
log_epoch: u64,
|
log_epoch: String,
|
||||||
commit_hash: &'static str,
|
commit_hash: &'static str,
|
||||||
file: Option<&'a str>,
|
file: Option<&'a str>,
|
||||||
line: Option<u32>,
|
line: Option<u32>,
|
||||||
target: &'a str,
|
target: &'a str,
|
||||||
level: &'static str,
|
level: &'static str,
|
||||||
message: Option<String>,
|
log_message: Option<String>,
|
||||||
}
|
}
|
||||||
if event.metadata().level() <= &tracing::Level::WARN {
|
if event.metadata().level() <= &tracing::Level::WARN {
|
||||||
|
struct Visitor(Option<String>);
|
||||||
|
impl tracing::field::Visit for Visitor {
|
||||||
|
fn record_str(&mut self, field: &tracing::field::Field, value: &str) {
|
||||||
|
if field.name() == "message" {
|
||||||
|
self.0 = Some(value.to_owned());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn record_error(
|
||||||
|
&mut self,
|
||||||
|
field: &tracing::field::Field,
|
||||||
|
value: &(dyn std::error::Error + 'static),
|
||||||
|
) {
|
||||||
|
if field.name() == "message" {
|
||||||
|
self.0 = Some(value.to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn record_debug(
|
||||||
|
&mut self,
|
||||||
|
field: &tracing::field::Field,
|
||||||
|
value: &dyn std::fmt::Debug,
|
||||||
|
) {
|
||||||
|
if field.name() == "message" {
|
||||||
|
self.0 = Some(format!("{:?}", value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut message = Visitor(None);
|
||||||
|
event.record(&mut message);
|
||||||
let body = LogRequest {
|
let body = LogRequest {
|
||||||
log_epoch: self.log_epoch.load(Ordering::SeqCst),
|
log_epoch: self.log_epoch.load(Ordering::SeqCst).to_string(),
|
||||||
commit_hash: COMMIT_HASH,
|
commit_hash: COMMIT_HASH,
|
||||||
file: event.metadata().file(),
|
file: event.metadata().file(),
|
||||||
line: event.metadata().line(),
|
line: event.metadata().line(),
|
||||||
target: event.metadata().target(),
|
target: event.metadata().target(),
|
||||||
level: event.metadata().level().as_str(),
|
level: event.metadata().level().as_str(),
|
||||||
message: event
|
log_message: message.0,
|
||||||
.fields()
|
|
||||||
.find(|f| f.name() == "message")
|
|
||||||
.map(|f| f.to_string()),
|
|
||||||
};
|
};
|
||||||
// we don't care about the result and need it to be fast
|
// we don't care about the result and need it to be fast
|
||||||
tokio::spawn(Client::new().post(&self.share_dest).json(&body).send());
|
tokio::spawn(Client::new().post(&self.share_dest).json(&body).send());
|
||||||
|
|||||||
Reference in New Issue
Block a user