diff --git a/Cargo.lock b/Cargo.lock
index 55bbd94..cb0c13d 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1468,7 +1468,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "975de676448231fcde04b9149d2543077e166b78fc29eae5aa219e7928410da2"
dependencies = [
- "uuid",
+ "uuid 0.8.2",
]
[[package]]
@@ -1601,7 +1601,6 @@ dependencies = [
"futures",
"git2",
"lazy_static",
- "log",
"mime",
"mime_guess",
"mktemp",
@@ -1615,6 +1614,8 @@ dependencies = [
"sqlx",
"tera",
"tokio",
+ "tracing",
+ "tracing-actix-web",
"url",
"urlencoding",
]
@@ -1767,6 +1768,26 @@ dependencies = [
"siphasher",
]
+[[package]]
+name = "pin-project"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "pin-project-lite"
version = "0.2.9"
@@ -2554,21 +2575,45 @@ dependencies = [
[[package]]
name = "tracing"
-version = "0.1.36"
+version = "0.1.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
dependencies = [
"cfg-if",
"log",
"pin-project-lite",
+ "tracing-attributes",
"tracing-core",
]
[[package]]
-name = "tracing-core"
-version = "0.1.29"
+name = "tracing-actix-web"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7"
+checksum = "d725b8fa6ef307b3f4856913523337de45c47cc79271bafd7acfb39559e3a2da"
+dependencies = [
+ "actix-web",
+ "pin-project",
+ "tracing",
+ "uuid 1.2.1",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
dependencies = [
"once_cell",
]
@@ -2726,6 +2771,15 @@ dependencies = [
"getrandom",
]
+[[package]]
+name = "uuid"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83"
+dependencies = [
+ "getrandom",
+]
+
[[package]]
name = "validator"
version = "0.15.0"
diff --git a/Cargo.toml b/Cargo.toml
index c1ac039..a2b31f5 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -29,7 +29,6 @@ serde = { version = "1", features = ["derive", "rc"]}
serde_json = "1"
pretty_env_logger = "0.4"
-log = "0.4"
lazy_static = "1.4"
@@ -47,7 +46,8 @@ mime_guess = "2.0.4"
mime = "0.3.16"
rust-embed = "6.3.0"
rand = "0.8.5"
-
+tracing = { version = "0.1.37", features = ["log"]}
+tracing-actix-web = "0.6.2"
[dependencies.cache-buster]
git = "https://github.com/realaravinth/cache-buster"
diff --git a/src/ctx/mod.rs b/src/ctx/mod.rs
index 6861361..511fd28 100644
--- a/src/ctx/mod.rs
+++ b/src/ctx/mod.rs
@@ -20,6 +20,7 @@ use std::thread;
use crate::db::*;
use crate::settings::Settings;
use argon2_creds::{Config as ArgonConfig, ConfigBuilder as ArgonConfigBuilder, PasswordPolicy};
+use tracing::info;
pub mod api;
@@ -51,9 +52,9 @@ impl Ctx {
#[allow(unused_variables)]
let init = thread::spawn(move || {
- log::info!("Initializing credential manager");
+ info!("Initializing credential manager");
c.init();
- log::info!("Initialized credential manager");
+ info!("Initialized credential manager");
});
let db = get_db(&settings).await;
diff --git a/src/db.rs b/src/db.rs
index 72379e0..8476532 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -22,6 +22,7 @@ use sqlx::types::time::OffsetDateTime;
//use sqlx::types::Json;
use sqlx::ConnectOptions;
use sqlx::PgPool;
+use tracing::error;
use url::quirks::hostname;
use crate::errors::*;
@@ -490,7 +491,7 @@ fn map_register_err(e: sqlx::Error) -> ServiceError {
} else if msg.contains("librepages_users_email_key") {
ServiceError::EmailTaken
} else {
- log::error!("{}", msg);
+ error!("{}", msg);
ServiceError::InternalServerError
}
} else {
diff --git a/src/main.rs b/src/main.rs
index e9f9bc4..a7f2cd1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -22,8 +22,9 @@ use actix_web::{
web::JsonConfig, App, HttpServer,
};
use clap::{Parser, Subcommand};
-use log::info;
use static_assets::FileMap;
+use tracing::info;
+use tracing_actix_web::TracingLogger;
mod api;
mod ctx;
@@ -80,10 +81,11 @@ enum Commands {
#[actix_web::main]
#[cfg(not(tarpaulin_include))]
async fn main() -> std::io::Result<()> {
- env::set_var("RUST_LOG", "info");
+ if env::var("RUST_LOG").is_err() {
+ env::set_var("RUST_LOG", "info");
+ }
pretty_env_logger::init();
-
let cli = Cli::parse();
info!(
@@ -111,7 +113,7 @@ async fn serve(settings: Settings, ctx: AppCtx) -> std::io::Result<()> {
info!("Starting server on: http://{}", ip);
HttpServer::new(move || {
App::new()
- .wrap(actix_middleware::Logger::default())
+ .wrap(TracingLogger::default())
.wrap(actix_middleware::Compress::default())
.app_data(ctx.clone())
.app_data(get_json_err())
diff --git a/src/page.rs b/src/page.rs
index 1685bea..64d8571 100644
--- a/src/page.rs
+++ b/src/page.rs
@@ -14,16 +14,18 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
-
-use git2::{build::CheckoutBuilder, BranchType, Direction, Oid, Remote, Repository};
-#[cfg(not(test))]
-use log::info;
-
#[cfg(test)]
use std::println as info;
+#[cfg(test)]
+use std::println as error;
+#[cfg(test)]
+use std::println as debug;
+use git2::{build::CheckoutBuilder, BranchType, Direction, Oid, Remote, Repository};
use serde::Deserialize;
use serde::Serialize;
+#[cfg(not(test))]
+use tracing::{debug, error, info};
use crate::db::Site;
use crate::errors::*;
@@ -95,7 +97,7 @@ impl Page {
branch: &str,
) -> ServiceResult> {
let mut remote = repo.find_remote("origin")?;
- log::info!("Fetching {} for repo", remote.name().unwrap());
+ info!("Fetching {} for repo", remote.name().unwrap());
remote.fetch(&[branch], None, None)?;
let fetch_head = repo.find_reference("FETCH_HEAD")?;
Ok(repo.reference_to_annotated_commit(&fetch_head)?)
@@ -112,20 +114,19 @@ impl Page {
// 2. Do the appropriate merge
if analysis.0.is_fast_forward() {
- //log::debug!("Doing a fast forward");
- log::debug!("Doing a fast forward");
+ debug!("Doing a fast forward");
// do a fast forward
let refname = format!("refs/heads/{}", branch);
match repo.find_reference(&refname) {
Ok(mut r) => {
- log::debug!("fast forwarding");
+ debug!("fast forwarding");
Self::fast_forward(repo, &mut r, &fetch_commit).unwrap();
}
Err(_) => {
// The branch doesn't exist so just set the reference to the
// commit directly. Usually this is because you are pulling
// into an empty repository.
- log::error!("Error in find ref");
+ error!("Error in find ref");
repo.reference(
&refname,
fetch_commit.id(),
@@ -151,7 +152,7 @@ impl Page {
.unwrap();
Self::normal_merge(repo, &head_commit, &fetch_commit).unwrap();
} else {
- log::info!("Nothing to do...");
+ info!("Nothing to do...");
}
Ok(())
}
@@ -178,7 +179,7 @@ impl Page {
) -> Result<(), git2::Error> {
let local_tree = repo.find_commit(local.id())?.tree().unwrap();
let remote_tree = repo.find_commit(remote.id())?.tree().unwrap();
- println!("{} {}", local.id(), remote.id());
+ debug!("{} {}", local.id(), remote.id());
let ancestor = repo
.find_commit(repo.merge_base(local.id(), remote.id()).unwrap())
.unwrap()
@@ -189,7 +190,7 @@ impl Page {
.unwrap();
if idx.has_conflicts() {
- log::debug!("Merge conflicts detected...");
+ debug!("Merge conflicts detected...");
repo.checkout_index(Some(&mut idx), None)?;
return Ok(());
}
@@ -223,7 +224,7 @@ impl Page {
None => String::from_utf8_lossy(lb.name_bytes()).to_string(),
};
let msg = format!("Fast-Forward: Setting {} to id: {}", name, rc.id());
- log::debug!("{}", msg);
+ debug!("{}", msg);
lb.set_target(rc.id(), &msg)?;
repo.set_head(&name)?;
repo.checkout_head(Some(git2::build::CheckoutBuilder::default().force()))?;
diff --git a/src/settings.rs b/src/settings.rs
index d5fb793..1b6f4b0 100644
--- a/src/settings.rs
+++ b/src/settings.rs
@@ -21,7 +21,7 @@ use std::sync::Arc;
use config::{Config, ConfigError, Environment, File};
use derive_more::Display;
#[cfg(not(test))]
-use log::{error, warn};
+use tracing::{error, warn};
#[cfg(test)]
use std::{println as warn, println as error};