Disable ANSI colors in logs and fix fail2ban regex

- Add with_ansi(false) to all tracing_subscriber fmt layers so log
  output (both stdout and file) is plain text without escape codes.
  This is critical for Docker deployments and fail2ban log parsing.

- Remove ^ anchor from fail2ban failregex since log lines have a
  timestamp/level prefix before RATE_LIMIT.
This commit is contained in:
2026-06-12 10:15:50 +00:00
parent 9ebb8ee7a8
commit c2eefddb4f
2 changed files with 9 additions and 4 deletions

View File

@@ -1,3 +1,3 @@
[Definition]
failregex = ^RATE_LIMIT client_ip=<HOST> host=\S+ path=\S+ status=\d+$
failregex = RATE_LIMIT client_ip=<HOST> host=\S+ path=\S+ status=\d+
ignoreregex =

View File

@@ -51,7 +51,7 @@ fn init_json(env_filter: EnvFilter, log_file_path: &Option<String>, level: Level
}
None => {
let layer = tracing_subscriber::fmt::layer()
.json()
.with_ansi(false)
.with_filter(env_filter);
tracing_subscriber::registry().with(layer).try_init()?;
}
@@ -72,8 +72,11 @@ fn init_text(env_filter: EnvFilter, log_file_path: &Option<String>, level: Level
let file_writer = Arc::new(file);
let file_env_filter = make_env_filter(level);
let stdout_layer = tracing_subscriber::fmt::layer().with_filter(env_filter);
let stdout_layer = tracing_subscriber::fmt::layer()
.with_ansi(false)
.with_filter(env_filter);
let file_layer = tracing_subscriber::fmt::layer()
.with_ansi(false)
.with_writer(file_writer)
.with_filter(file_env_filter);
tracing_subscriber::registry()
@@ -82,7 +85,9 @@ fn init_text(env_filter: EnvFilter, log_file_path: &Option<String>, level: Level
.try_init()?;
}
None => {
let layer = tracing_subscriber::fmt::layer().with_filter(env_filter);
let layer = tracing_subscriber::fmt::layer()
.with_ansi(false)
.with_filter(env_filter);
tracing_subscriber::registry().with(layer).try_init()?;
}
}