aboutsummaryrefslogtreecommitdiffstats
path: root/lib/warden-stack/src/tracing/loki.rs
blob: be4968b5a4994532f4553e9e77cf97bb189284f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use crate::Monitoring;

use super::TracingBuilder;
use super::tracing_builder::{IsUnset, SetLokiTask, State};
use tracing_subscriber::Layer;

impl<S: State> TracingBuilder<S> {
    pub fn loki(
        mut self,
        config: &crate::AppConfig,
        monitoring: &Monitoring,
    ) -> Result<TracingBuilder<SetLokiTask<S>>, crate::ServiceError>
    where
        S::LokiTask: IsUnset,
    {
        use std::str::FromStr;
        let url = FromStr::from_str(monitoring.loki_endpoint.as_ref())
            .map_err(|_e| crate::ServiceError::Unknown)?;

        let (layer, task) = tracing_loki::builder()
            .label("service_name", config.name.as_ref())?
            .extra_field("pid", format!("{}", std::process::id()))?
            .build_url(url)?;

        self.layers.push(layer.boxed());

        Ok(self.loki_internal(task))
    }
}