From 7bcf20ebfe195bea08cc384d57de431eed9dd297 Mon Sep 17 00:00:00 2001 From: Jose Celano Date: Tue, 6 Jun 2023 17:19:44 +0100 Subject: [PATCH] feat: disable sqlx logging for all statements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the loggin level is set to INFO sqlx logs all SQL statements like this: ``` 2023-06-06T17:19:52.639651375+01:00 [sqlx::query][INFO] SELECT version FROM _sqlx_migrations …; rows affected: 0, rows returned: 0, elapsed: 58.361µs SELECT version FROM _sqlx_migrations WHERE success = false ORDER BY version LIMIT 1 ``` This commits makes sqlc to log only failed statements as errors and slow statements (>1 second) as warnings. --- src/bootstrap/logging.rs | 2 +- src/databases/mysql.rs | 14 +++++++++++--- src/databases/sqlite.rs | 14 +++++++++++--- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/bootstrap/logging.rs b/src/bootstrap/logging.rs index a1441827..303c5775 100644 --- a/src/bootstrap/logging.rs +++ b/src/bootstrap/logging.rs @@ -29,7 +29,7 @@ pub fn setup() { fn config_level_or_default(log_level: &Option) -> LevelFilter { match log_level { - None => log::LevelFilter::Warn, + None => log::LevelFilter::Info, Some(level) => LevelFilter::from_str(level).unwrap(), } } diff --git a/src/databases/mysql.rs b/src/databases/mysql.rs index 5e3206db..2af56f3e 100644 --- a/src/databases/mysql.rs +++ b/src/databases/mysql.rs @@ -1,7 +1,10 @@ +use std::str::FromStr; +use std::time::Duration; + use async_trait::async_trait; use chrono::NaiveDateTime; -use sqlx::mysql::MySqlPoolOptions; -use sqlx::{query, query_as, Acquire, MySqlPool}; +use sqlx::mysql::{MySqlConnectOptions, MySqlPoolOptions}; +use sqlx::{query, query_as, Acquire, ConnectOptions, MySqlPool}; use crate::databases::database; use crate::databases::database::{Category, Database, Driver, Sorting, TorrentCompact}; @@ -25,8 +28,13 @@ impl Database for Mysql { } async fn new(database_url: &str) -> Self { + let mut connection_options = MySqlConnectOptions::from_str(database_url).expect("Unable to create connection options."); + connection_options + .log_statements(log::LevelFilter::Error) + .log_slow_statements(log::LevelFilter::Warn, Duration::from_secs(1)); + let db = MySqlPoolOptions::new() - .connect(database_url) + .connect_with(connection_options) .await .expect("Unable to create database pool."); diff --git a/src/databases/sqlite.rs b/src/databases/sqlite.rs index 31bec6a2..75a10cd2 100644 --- a/src/databases/sqlite.rs +++ b/src/databases/sqlite.rs @@ -1,7 +1,10 @@ +use std::str::FromStr; +use std::time::Duration; + use async_trait::async_trait; use chrono::NaiveDateTime; -use sqlx::sqlite::SqlitePoolOptions; -use sqlx::{query, query_as, Acquire, SqlitePool}; +use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions}; +use sqlx::{query, query_as, Acquire, ConnectOptions, SqlitePool}; use crate::databases::database; use crate::databases::database::{Category, Database, Driver, Sorting, TorrentCompact}; @@ -25,8 +28,13 @@ impl Database for Sqlite { } async fn new(database_url: &str) -> Self { + let mut connection_options = SqliteConnectOptions::from_str(database_url).expect("Unable to create connection options."); + connection_options + .log_statements(log::LevelFilter::Error) + .log_slow_statements(log::LevelFilter::Warn, Duration::from_secs(1)); + let db = SqlitePoolOptions::new() - .connect(database_url) + .connect_with(connection_options) .await .expect("Unable to create database pool.");