Skip to content

Commit 7bcf20e

Browse files
committed
feat: disable sqlx logging for all statements
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.
1 parent 7347fee commit 7bcf20e

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

src/bootstrap/logging.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub fn setup() {
2929

3030
fn config_level_or_default(log_level: &Option<String>) -> LevelFilter {
3131
match log_level {
32-
None => log::LevelFilter::Warn,
32+
None => log::LevelFilter::Info,
3333
Some(level) => LevelFilter::from_str(level).unwrap(),
3434
}
3535
}

src/databases/mysql.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
use std::str::FromStr;
2+
use std::time::Duration;
3+
14
use async_trait::async_trait;
25
use chrono::NaiveDateTime;
3-
use sqlx::mysql::MySqlPoolOptions;
4-
use sqlx::{query, query_as, Acquire, MySqlPool};
6+
use sqlx::mysql::{MySqlConnectOptions, MySqlPoolOptions};
7+
use sqlx::{query, query_as, Acquire, ConnectOptions, MySqlPool};
58

69
use crate::databases::database;
710
use crate::databases::database::{Category, Database, Driver, Sorting, TorrentCompact};
@@ -25,8 +28,13 @@ impl Database for Mysql {
2528
}
2629

2730
async fn new(database_url: &str) -> Self {
31+
let mut connection_options = MySqlConnectOptions::from_str(database_url).expect("Unable to create connection options.");
32+
connection_options
33+
.log_statements(log::LevelFilter::Error)
34+
.log_slow_statements(log::LevelFilter::Warn, Duration::from_secs(1));
35+
2836
let db = MySqlPoolOptions::new()
29-
.connect(database_url)
37+
.connect_with(connection_options)
3038
.await
3139
.expect("Unable to create database pool.");
3240

src/databases/sqlite.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
use std::str::FromStr;
2+
use std::time::Duration;
3+
14
use async_trait::async_trait;
25
use chrono::NaiveDateTime;
3-
use sqlx::sqlite::SqlitePoolOptions;
4-
use sqlx::{query, query_as, Acquire, SqlitePool};
6+
use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions};
7+
use sqlx::{query, query_as, Acquire, ConnectOptions, SqlitePool};
58

69
use crate::databases::database;
710
use crate::databases::database::{Category, Database, Driver, Sorting, TorrentCompact};
@@ -25,8 +28,13 @@ impl Database for Sqlite {
2528
}
2629

2730
async fn new(database_url: &str) -> Self {
31+
let mut connection_options = SqliteConnectOptions::from_str(database_url).expect("Unable to create connection options.");
32+
connection_options
33+
.log_statements(log::LevelFilter::Error)
34+
.log_slow_statements(log::LevelFilter::Warn, Duration::from_secs(1));
35+
2836
let db = SqlitePoolOptions::new()
29-
.connect(database_url)
37+
.connect_with(connection_options)
3038
.await
3139
.expect("Unable to create database pool.");
3240

0 commit comments

Comments
 (0)