diff --git a/Cargo.toml b/Cargo.toml index 8fc5401d7..a30a773e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,6 +29,7 @@ time = { version = "^0.2", optional = true } futures = { version = "^0.3" } futures-util = { version = "^0.3" } tracing = { version = "0.1", features = ["log"] } +log = { version = "^0"} rust_decimal = { version = "^1", optional = true } sea-orm-macros = { version = "^0.8.0", path = "sea-orm-macros", optional = true } sea-query = { version = "^0.24.5", features = ["thread-safe"] } diff --git a/src/database/mod.rs b/src/database/mod.rs index 879f7a371..7d9b7b357 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -42,6 +42,8 @@ pub struct ConnectOptions { pub(crate) max_lifetime: Option, /// Enable SQLx statement logging pub(crate) sqlx_logging: bool, + /// SQLx statement logging level (ignored if `sqlx_logging` is false) + pub(crate) sqlx_logging_level: log::LevelFilter, /// set sqlcipher key pub(crate) sqlcipher_key: Option>, } @@ -107,6 +109,7 @@ impl ConnectOptions { idle_timeout: None, max_lifetime: None, sqlx_logging: true, + sqlx_logging_level: log::LevelFilter::Info, sqlcipher_key: None, } } @@ -211,6 +214,18 @@ impl ConnectOptions { self.sqlx_logging } + /// Set SQLx statement logging level (default INFO) + /// (ignored if `sqlx_logging` is `false`) + pub fn sqlx_logging_level(&mut self, level: log::LevelFilter) -> &mut Self { + self.sqlx_logging_level = level; + self + } + + /// Get the level of SQLx statement logging + pub fn get_sqlx_logging_level(&self) -> log::LevelFilter { + self.sqlx_logging_level + } + /// set key for sqlcipher pub fn sqlcipher_key(&mut self, value: T) -> &mut Self where diff --git a/src/driver/sqlx_mysql.rs b/src/driver/sqlx_mysql.rs index 5a3c05629..01b840ddb 100644 --- a/src/driver/sqlx_mysql.rs +++ b/src/driver/sqlx_mysql.rs @@ -46,9 +46,11 @@ impl SqlxMySqlConnector { .url .parse::() .map_err(|e| DbErr::Conn(e.to_string()))?; + use sqlx::ConnectOptions; if !options.sqlx_logging { - use sqlx::ConnectOptions; opt.disable_statement_logging(); + } else { + opt.log_statements(options.sqlx_logging_level); } match options.pool_options().connect_with(opt).await { Ok(pool) => Ok(DatabaseConnection::SqlxMySqlPoolConnection( diff --git a/src/driver/sqlx_postgres.rs b/src/driver/sqlx_postgres.rs index f09c8760f..7a50a3d83 100644 --- a/src/driver/sqlx_postgres.rs +++ b/src/driver/sqlx_postgres.rs @@ -46,9 +46,11 @@ impl SqlxPostgresConnector { .url .parse::() .map_err(|e| DbErr::Conn(e.to_string()))?; + use sqlx::ConnectOptions; if !options.sqlx_logging { - use sqlx::ConnectOptions; opt.disable_statement_logging(); + } else { + opt.log_statements(options.sqlx_logging_level); } match options.pool_options().connect_with(opt).await { Ok(pool) => Ok(DatabaseConnection::SqlxPostgresPoolConnection( diff --git a/src/driver/sqlx_sqlite.rs b/src/driver/sqlx_sqlite.rs index ae3edad24..8bf562148 100644 --- a/src/driver/sqlx_sqlite.rs +++ b/src/driver/sqlx_sqlite.rs @@ -50,9 +50,11 @@ impl SqlxSqliteConnector { if options.sqlcipher_key.is_some() { opt = opt.pragma("key", options.sqlcipher_key.clone().unwrap()); } + use sqlx::ConnectOptions; if !options.sqlx_logging { - use sqlx::ConnectOptions; opt.disable_statement_logging(); + } else { + opt.log_statements(options.sqlx_logging_level); } if options.get_max_connections().is_none() { options.max_connections(1);