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};