Skip to content

Commit 69f100a

Browse files
committed
refactor: [torrust#884] move from log to tracing crate
1 parent 6e06b2e commit 69f100a

File tree

10 files changed

+70
-30
lines changed

10 files changed

+70
-30
lines changed

packages/configuration/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ impl Info {
6464
let env_var_config_toml_path = ENV_VAR_CONFIG_TOML_PATH.to_string();
6565

6666
let config_toml = if let Ok(config_toml) = env::var(env_var_config_toml) {
67-
println!("Loading configuration from environment variable {config_toml} ...");
67+
println!("Loading configuration from environment variable:\n {config_toml}");
6868
Some(config_toml)
6969
} else {
7070
None

share/default/config/tracker.e2e.container.sqlite3.toml

+4
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,7 @@ ssl_key_path = "/var/lib/torrust/tracker/tls/localhost.key"
1111
[http_api]
1212
ssl_cert_path = "/var/lib/torrust/tracker/tls/localhost.crt"
1313
ssl_key_path = "/var/lib/torrust/tracker/tls/localhost.key"
14+
15+
[health_check_api]
16+
# Must be bound to wildcard IP to be accessible from outside the container
17+
bind_address = "0.0.0.0:1313"

src/bootstrap/logging.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ fn config_level_or_default(log_level: &Option<LogLevel>) -> LevelFilter {
4646
}
4747

4848
fn tracing_stdout_init(filter: LevelFilter, style: &TraceStyle) {
49-
let builder = tracing_subscriber::fmt().with_max_level(filter);
49+
let builder = tracing_subscriber::fmt().with_max_level(filter).with_ansi(false);
5050

5151
let () = match style {
5252
TraceStyle::Default => builder.init(),

src/console/ci/e2e/docker.rs

+2
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ impl Docker {
176176

177177
let output_str = String::from_utf8_lossy(&output.stdout);
178178

179+
info!("Waiting until container is healthy: {:?}", output_str);
180+
179181
if output_str.contains("(healthy)") {
180182
return true;
181183
}

src/console/ci/e2e/logs_parser.rs

+51-22
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
//! Utilities to parse Torrust Tracker logs.
22
use serde::{Deserialize, Serialize};
33

4-
const UDP_TRACKER_PATTERN: &str = "INFO UDP TRACKER: Starting on: udp://";
5-
const HTTP_TRACKER_PATTERN: &str = "INFO HTTP TRACKER: Starting on: ";
6-
const HEALTH_CHECK_PATTERN: &str = "INFO HEALTH CHECK API: Starting on: ";
4+
const UDP_TRACKER_PATTERN: &str = "UDP TRACKER: Started on: udp://";
5+
const HTTP_TRACKER_PATTERN: &str = "HTTP TRACKER: Started on: ";
6+
const HEALTH_CHECK_PATTERN: &str = "HEALTH CHECK API: Started on: ";
77

88
#[derive(Serialize, Deserialize, Debug, Default)]
99
pub struct RunningServices {
@@ -19,16 +19,17 @@ impl RunningServices {
1919
///
2020
/// ```text
2121
/// Loading configuration from default configuration file: `./share/default/config/tracker.development.sqlite3.toml` ...
22-
/// 2024-06-10T14:26:10.040894Z INFO torrust_tracker::bootstrap::logging: logging initialized.
23-
/// 2024-06-10T14:26:10.041363Z INFO UDP TRACKER: Starting on: udp://0.0.0.0:6969
24-
/// 2024-06-10T14:26:10.041386Z INFO torrust_tracker::bootstrap::jobs: TLS not enabled
25-
/// 2024-06-10T14:26:10.041420Z INFO HTTP TRACKER: Starting on: http://0.0.0.0:7070
26-
/// 2024-06-10T14:26:10.041516Z INFO HTTP TRACKER: Started on: http://0.0.0.0:7070
27-
/// 2024-06-10T14:26:10.041521Z INFO torrust_tracker::bootstrap::jobs: TLS not enabled
28-
/// 2024-06-10T14:26:10.041611Z INFO API: Starting on http://127.0.0.1:1212
29-
/// 2024-06-10T14:26:10.041614Z INFO API: Started on http://127.0.0.1:1212
30-
/// 2024-06-10T14:26:10.041623Z INFO HEALTH CHECK API: Starting on: http://127.0.0.1:1313
31-
/// 2024-06-10T14:26:10.041657Z INFO HEALTH CHECK API: Started on: http://127.0.0.1:1313
22+
/// 2024-06-10T14:59:57.973525Z INFO torrust_tracker::bootstrap::logging: logging initialized.
23+
/// 2024-06-10T14:59:57.974306Z INFO UDP TRACKER: Starting on: udp://0.0.0.0:6969
24+
/// 2024-06-10T14:59:57.974316Z INFO UDP TRACKER: Started on: udp://0.0.0.0:6969
25+
/// 2024-06-10T14:59:57.974332Z INFO torrust_tracker::bootstrap::jobs: TLS not enabled
26+
/// 2024-06-10T14:59:57.974366Z INFO HTTP TRACKER: Starting on: http://0.0.0.0:7070
27+
/// 2024-06-10T14:59:57.974513Z INFO HTTP TRACKER: Started on: http://0.0.0.0:7070
28+
/// 2024-06-10T14:59:57.974521Z INFO torrust_tracker::bootstrap::jobs: TLS not enabled
29+
/// 2024-06-10T14:59:57.974615Z INFO API: Starting on http://127.0.0.1:1212
30+
/// 2024-06-10T14:59:57.974618Z INFO API: Started on http://127.0.0.1:1212
31+
/// 2024-06-10T14:59:57.974643Z INFO HEALTH CHECK API: Starting on: http://127.0.0.1:1313
32+
/// 2024-06-10T14:59:57.974760Z INFO HEALTH CHECK API: Started on: http://127.0.0.1:1313
3233
/// ```
3334
///
3435
/// It would extract these services:
@@ -46,6 +47,9 @@ impl RunningServices {
4647
/// ]
4748
/// }
4849
/// ```
50+
///
51+
/// NOTICE: Using colors in the console output could affect this method
52+
/// due to the hidden control chars.
4953
#[must_use]
5054
pub fn parse_from_logs(logs: &str) -> Self {
5155
let mut udp_trackers: Vec<String> = Vec::new();
@@ -85,20 +89,45 @@ mod tests {
8589

8690
#[test]
8791
fn it_should_parse_from_logs_with_valid_logs() {
88-
let logs = "\
89-
INFO UDP TRACKER: Starting on: udp://0.0.0.0:8080\n\
90-
INFO HTTP TRACKER: Starting on: 0.0.0.0:9090\n\
91-
INFO HEALTH CHECK API: Starting on: 0.0.0.0:10010";
92-
let running_services = RunningServices::parse_from_logs(logs);
92+
let log = r#"
93+
Loading configuration from environment variable db_path = "/var/lib/torrust/tracker/database/sqlite3.db"
94+
95+
[[udp_trackers]]
96+
enabled = true
97+
98+
[[http_trackers]]
99+
enabled = true
100+
ssl_cert_path = "/var/lib/torrust/tracker/tls/localhost.crt"
101+
ssl_key_path = "/var/lib/torrust/tracker/tls/localhost.key"
102+
103+
[http_api]
104+
ssl_cert_path = "/var/lib/torrust/tracker/tls/localhost.crt"
105+
ssl_key_path = "/var/lib/torrust/tracker/tls/localhost.key"
106+
...
107+
Loading configuration from file: `/etc/torrust/tracker/tracker.toml` ...
108+
2024-06-10T15:09:54.411031Z INFO torrust_tracker::bootstrap::logging: logging initialized.
109+
2024-06-10T15:09:54.415084Z INFO UDP TRACKER: Starting on: udp://0.0.0.0:6969
110+
2024-06-10T15:09:54.415091Z INFO UDP TRACKER: Started on: udp://0.0.0.0:6969
111+
2024-06-10T15:09:54.415104Z INFO torrust_tracker::bootstrap::jobs: TLS not enabled
112+
2024-06-10T15:09:54.415130Z INFO HTTP TRACKER: Starting on: http://0.0.0.0:7070
113+
2024-06-10T15:09:54.415266Z INFO HTTP TRACKER: Started on: http://0.0.0.0:7070
114+
2024-06-10T15:09:54.415275Z INFO torrust_tracker::bootstrap::jobs: TLS not enabled
115+
2024-06-10T15:09:54.415403Z INFO API: Starting on http://127.0.0.1:1212
116+
2024-06-10T15:09:54.415411Z INFO API: Started on http://127.0.0.1:1212
117+
2024-06-10T15:09:54.415430Z INFO HEALTH CHECK API: Starting on: http://127.0.0.1:1313
118+
2024-06-10T15:09:54.415472Z INFO HEALTH CHECK API: Started on: http://127.0.0.1:1313
119+
"#;
120+
121+
let running_services = RunningServices::parse_from_logs(log);
93122

94-
assert_eq!(running_services.udp_trackers, vec!["127.0.0.1:8080"]);
95-
assert_eq!(running_services.http_trackers, vec!["127.0.0.1:9090"]);
96-
assert_eq!(running_services.health_checks, vec!["127.0.0.1:10010/health_check"]);
123+
assert_eq!(running_services.udp_trackers, vec!["127.0.0.1:6969"]);
124+
assert_eq!(running_services.http_trackers, vec!["http://127.0.0.1:7070"]);
125+
assert_eq!(running_services.health_checks, vec!["http://127.0.0.1:1313/health_check"]);
97126
}
98127

99128
#[test]
100129
fn it_should_ignore_logs_with_no_matching_lines() {
101-
let logs = "[Other Service][INFO] Starting on: 0.0.0.0:7070";
130+
let logs = "[Other Service][INFO] Started on: 0.0.0.0:7070";
102131
let running_services = RunningServices::parse_from_logs(logs);
103132

104133
assert!(running_services.udp_trackers.is_empty());

src/console/ci/e2e/runner.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ pub fn run() {
6060

6161
let running_services = tracker_container.running_services();
6262

63+
info!(
64+
"Running services:\n {}",
65+
serde_json::to_string_pretty(&running_services).expect("running services to be serializable to JSON")
66+
);
67+
6368
assert_there_is_at_least_one_service_per_type(&running_services);
6469

6570
let tracker_checker_config =
@@ -78,7 +83,7 @@ pub fn run() {
7883
}
7984

8085
fn tracing_stdout_init(filter: LevelFilter) {
81-
tracing_subscriber::fmt().with_max_level(filter).init();
86+
tracing_subscriber::fmt().with_max_level(filter).with_ansi(false).init();
8287
info!("logging initialized.");
8388
}
8489

src/console/ci/e2e/tracker_container.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::time::Duration;
22

33
use rand::distributions::Alphanumeric;
44
use rand::Rng;
5-
use tracing::{debug, error, info};
5+
use tracing::{error, info};
66

77
use super::docker::{RunOptions, RunningContainer};
88
use super::logs_parser::RunningServices;
@@ -72,7 +72,7 @@ impl TrackerContainer {
7272
pub fn running_services(&self) -> RunningServices {
7373
let logs = Docker::logs(&self.name).expect("Logs should be captured from running container");
7474

75-
debug!("Parsing running services from logs. Logs :\n{logs}");
75+
info!("Parsing running services from logs. Logs :\n{logs}");
7676

7777
RunningServices::parse_from_logs(&logs)
7878
}

src/console/clients/checker/app.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ pub async fn run() -> Result<Vec<CheckResult>> {
5858
}
5959

6060
fn tracing_stdout_init(filter: LevelFilter) {
61-
tracing_subscriber::fmt().with_max_level(filter).init();
61+
tracing_subscriber::fmt().with_max_level(filter).with_ansi(false).init();
6262
info!("logging initialized.");
6363
}
6464

src/console/clients/udp/app.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ pub async fn run() -> anyhow::Result<()> {
127127
}
128128

129129
fn tracing_stdout_init(filter: LevelFilter) {
130-
tracing_subscriber::fmt().with_max_level(filter).init();
130+
tracing_subscriber::fmt().with_max_level(filter).with_ansi(false).init();
131131
info!("logging initialized.");
132132
}
133133

src/servers/udp/server.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ impl Udp {
273273
.send(Started { address })
274274
.expect("the UDP Tracker service should not be dropped");
275275

276-
debug!(target: "UDP TRACKER", "Started on: udp://{}", address);
276+
info!(target: "UDP TRACKER", "Started on: udp://{}", address);
277277

278278
let stop = running.abort_handle();
279279

0 commit comments

Comments
 (0)