Merge pull request 'Fix #623 tracing crate' (#868) from logging into main

Reviewed-on: https://git.joinplu.me/Plume/Plume/pulls/868

I read tracing's documentation and thought that is what I need. I decided use it instead of log crate. Thank you for info, igalic.
This commit is contained in:
KitaitiMakoto 2021-01-06 13:38:48 +00:00
commit 8539bdaf72
11 changed files with 48 additions and 21 deletions

15
Cargo.lock generated
View File

@ -2598,6 +2598,7 @@ dependencies = [
"serde 1.0.118 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.118 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)",
"shrinkwraprs 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "shrinkwraprs 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"tracing 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
"validator 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "validator 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"validator_derive 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "validator_derive 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"webfinger 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "webfinger 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2646,6 +2647,7 @@ dependencies = [
"shrinkwraprs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "shrinkwraprs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"syntect 4.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntect 4.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
"tracing 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@ -2704,6 +2706,7 @@ dependencies = [
"serde_json 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.61 (registry+https://github.com/rust-lang/crates.io-index)",
"shrinkwraprs 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "shrinkwraprs 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"tantivy 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "tantivy 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tracing 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)",
"url 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"webfinger 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "webfinger 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -4179,9 +4182,20 @@ dependencies = [
"cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
"pin-project-lite 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project-lite 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"tracing-attributes 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
"tracing-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", "tracing-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "tracing-attributes"
version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 1.0.56 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "tracing-core" name = "tracing-core"
version = "0.1.17" version = "0.1.17"
@ -5071,6 +5085,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
"checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860" "checksum tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e987b6bf443f4b5b3b6f38704195592cca41c5bb7aedd3c3693c7081f8289860"
"checksum tracing 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "9f47026cdc4080c07e49b37087de021820269d996f581aac150ef9e5583eefe3" "checksum tracing 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "9f47026cdc4080c07e49b37087de021820269d996f581aac150ef9e5583eefe3"
"checksum tracing-attributes 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada"
"checksum tracing-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" "checksum tracing-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f"
"checksum tracing-futures 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c" "checksum tracing-futures 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ab7bb6f14721aa00656086e9335d363c5c8747bae02ebe32ea2c7dece5689b4c"
"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079"

View File

@ -30,6 +30,7 @@ shrinkwraprs = "0.2.1"
validator = "0.8" validator = "0.8"
validator_derive = "0.8" validator_derive = "0.8"
webfinger = "0.4.1" webfinger = "0.4.1"
tracing = "0.1.22"
[[bin]] [[bin]]
name = "plume" name = "plume"

View File

@ -23,6 +23,7 @@ shrinkwraprs = "0.3.0"
syntect = "4.5.0" syntect = "4.5.0"
tokio = "0.1.22" tokio = "0.1.22"
regex-syntax = { version = "0.6.17", default-features = false, features = ["unicode-perl"] } regex-syntax = { version = "0.6.17", default-features = false, features = ["unicode-perl"] }
tracing = "0.1.22"
[dependencies.chrono] [dependencies.chrono]
features = ["serde"] features = ["serde"]

View File

@ -1,5 +1,6 @@
use activitypub::{Activity, Link, Object}; use activitypub::{Activity, Link, Object};
use array_tool::vec::Uniq; use array_tool::vec::Uniq;
use tracing::{debug, warn};
use reqwest::r#async::ClientBuilder; use reqwest::r#async::ClientBuilder;
use rocket::{ use rocket::{
http::Status, http::Status,
@ -153,10 +154,10 @@ where
.send() .send()
.and_then(|r| r.into_body().concat2()) .and_then(|r| r.into_body().concat2())
.map(move |response| { .map(move |response| {
println!("Successfully sent activity to inbox ({})", inbox); debug!("Successfully sent activity to inbox ({})", inbox);
println!("Response: \"{:?}\"\n", response) debug!("Response: \"{:?}\"\n", response)
}) })
.map_err(|e| println!("Error while sending to inbox ({:?})", e)), .map_err(|e| warn!("Error while sending to inbox ({:?})", e)),
); );
} }
rt.run().unwrap(); rt.run().unwrap();

View File

@ -32,6 +32,7 @@ shrinkwraprs = "0.2.1"
diesel-derive-newtype = "0.1.2" diesel-derive-newtype = "0.1.2"
glob = "0.3.0" glob = "0.3.0"
lindera-tantivy = { version = "0.1.3", optional = true } lindera-tantivy = { version = "0.1.3", optional = true }
tracing = "0.1.22"
[dependencies.chrono] [dependencies.chrono]
features = ["serde"] features = ["serde"]

View File

@ -1,5 +1,6 @@
use crate::{Connection, Error, Result}; use crate::{Connection, Error, Result};
use diesel::connection::{Connection as Conn, SimpleConnection}; use diesel::connection::{Connection as Conn, SimpleConnection};
use tracing::info;
use migrations_internals::{setup_database, MigrationConnection}; use migrations_internals::{setup_database, MigrationConnection};
use std::path::Path; use std::path::Path;
@ -26,7 +27,7 @@ struct ComplexMigration {
impl ComplexMigration { impl ComplexMigration {
fn run(&self, conn: &Connection, path: &Path) -> Result<()> { fn run(&self, conn: &Connection, path: &Path) -> Result<()> {
println!("Running migration {}", self.name); info!("Running migration {}", self.name);
for step in self.up { for step in self.up {
step.run(conn, path)? step.run(conn, path)?
} }
@ -34,7 +35,7 @@ impl ComplexMigration {
} }
fn revert(&self, conn: &Connection, path: &Path) -> Result<()> { fn revert(&self, conn: &Connection, path: &Path) -> Result<()> {
println!("Reverting migration {}", self.name); info!("Reverting migration {}", self.name);
for step in self.down { for step in self.down {
step.run(conn, path)? step.run(conn, path)?
} }

View File

@ -1,3 +1,4 @@
use tracing::warn;
use plume_common::activity_pub::{ use plume_common::activity_pub::{
inbox::FromId, inbox::FromId,
request::Digest, request::Digest,
@ -41,7 +42,7 @@ pub fn handle_incoming(
} }
}) })
.map_err(|_| { .map_err(|_| {
println!( warn!(
"Rejected invalid activity supposedly from {}, with headers {:?}", "Rejected invalid activity supposedly from {}, with headers {:?}",
actor.username, headers.0 actor.username, headers.0
); );
@ -58,7 +59,7 @@ pub fn handle_incoming(
Ok(match inbox(&rockets, act) { Ok(match inbox(&rockets, act) {
Ok(_) => String::new(), Ok(_) => String::new(),
Err(e) => { Err(e) => {
println!("Shared inbox error: {:?}", e); warn!("Shared inbox error: {:?}", e);
format!("Error: {:?}", e) format!("Error: {:?}", e)
} }
}) })

View File

@ -13,6 +13,7 @@ extern crate validator_derive;
use chrono::Utc; use chrono::Utc;
use clap::App; use clap::App;
use diesel::r2d2::ConnectionManager; use diesel::r2d2::ConnectionManager;
use tracing::warn;
use plume_models::{ use plume_models::{
db_conn::{DbPool, PragmaForeignKey}, db_conn::{DbPool, PragmaForeignKey},
instance::Instance, instance::Instance,
@ -50,12 +51,6 @@ compile_i18n!();
/// Initializes a database pool. /// Initializes a database pool.
fn init_pool() -> Option<DbPool> { fn init_pool() -> Option<DbPool> {
match dotenv::dotenv() {
Ok(path) => println!("Configuration read from {}", path.display()),
Err(ref e) if e.not_found() => eprintln!("no .env was found"),
e => e.map(|_| ()).unwrap(),
}
let manager = ConnectionManager::<Connection>::new(CONFIG.database_url.as_str()); let manager = ConnectionManager::<Connection>::new(CONFIG.database_url.as_str());
let mut builder = DbPool::builder() let mut builder = DbPool::builder()
.connection_customizer(Box::new(PragmaForeignKey)) .connection_customizer(Box::new(PragmaForeignKey))
@ -69,6 +64,12 @@ fn init_pool() -> Option<DbPool> {
} }
fn main() { fn main() {
match dotenv::dotenv() {
Ok(path) => eprintln!("Configuration read from {}", path.display()),
Err(ref e) if e.not_found() => eprintln!("no .env was found"),
e => e.map(|_| ()).unwrap(),
}
App::new("Plume") App::new("Plume")
.bin_name("plume") .bin_name("plume")
.version(env!("CARGO_PKG_VERSION")) .version(env!("CARGO_PKG_VERSION"))
@ -82,6 +83,8 @@ and https://docs.joinplu.me/installation/init for more info.
"#, "#,
) )
.get_matches(); .get_matches();
// Initialize Rocket early to load its internal logger
let rocket = rocket::custom(CONFIG.rocket.clone().unwrap());
let dbpool = init_pool().expect("main: database pool initialization error"); let dbpool = init_pool().expect("main: database pool initialization error");
if IMPORTED_MIGRATIONS if IMPORTED_MIGRATIONS
.is_pending(&dbpool.get().unwrap()) .is_pending(&dbpool.get().unwrap())
@ -112,7 +115,7 @@ Then try to restart Plume.
.expect("main: error on backing up search index directory for recreating"); .expect("main: error on backing up search index directory for recreating");
if UnmanagedSearcher::create(&CONFIG.search_index, &CONFIG.search_tokenizers).is_ok() { if UnmanagedSearcher::create(&CONFIG.search_index, &CONFIG.search_tokenizers).is_ok() {
if fs::remove_dir_all(backup_path).is_err() { if fs::remove_dir_all(backup_path).is_err() {
eprintln!( warn!(
"error on removing backup directory: {}. it remains", "error on removing backup directory: {}. it remains",
backup_path.display() backup_path.display()
); );
@ -171,11 +174,11 @@ Then try to restart Plume
let mail = mail::init(); let mail = mail::init();
if mail.is_none() && CONFIG.rocket.as_ref().unwrap().environment.is_prod() { if mail.is_none() && CONFIG.rocket.as_ref().unwrap().environment.is_prod() {
println!("Warning: the email server is not configured (or not completely)."); warn!("Warning: the email server is not configured (or not completely).");
println!("Please refer to the documentation to see how to configure it."); warn!("Please refer to the documentation to see how to configure it.");
} }
let rocket = rocket::custom(CONFIG.rocket.clone().unwrap()) let rocket = rocket
.mount( .mount(
"/", "/",
routes![ routes![

View File

@ -1,4 +1,5 @@
use crate::template_utils::{IntoContext, Ructe}; use crate::template_utils::{IntoContext, Ructe};
use tracing::warn;
use plume_models::{Error, PlumeRocket}; use plume_models::{Error, PlumeRocket};
use rocket::{ use rocket::{
response::{self, Responder}, response::{self, Responder},
@ -49,7 +50,7 @@ pub fn server_error(req: &Request<'_>) -> Ructe {
#[post("/csrf-violation?<target>")] #[post("/csrf-violation?<target>")]
pub fn csrf_violation(target: Option<String>, rockets: PlumeRocket) -> Ructe { pub fn csrf_violation(target: Option<String>, rockets: PlumeRocket) -> Ructe {
if let Some(uri) = target { if let Some(uri) = target {
eprintln!("Csrf violation while acceding \"{}\"", uri) warn!("Csrf violation while accessing \"{}\"", uri)
} }
render!(errors::csrf(&rockets.to_context())) render!(errors::csrf(&rockets.to_context()))
} }

View File

@ -1,5 +1,6 @@
use crate::routes::RespondOrRedirect; use crate::routes::RespondOrRedirect;
use lettre::Transport; use lettre::Transport;
use tracing::warn;
use rocket::http::ext::IntoOwned; use rocket::http::ext::IntoOwned;
use rocket::{ use rocket::{
http::{uri::Uri, Cookie, Cookies, SameSite}, http::{uri::Uri, Cookie, Cookies, SameSite},
@ -155,7 +156,7 @@ pub fn password_reset_request(
) { ) {
if let Some(ref mut mail) = *mail.lock().unwrap() { if let Some(ref mut mail) = *mail.lock().unwrap() {
mail.send(message.into()) mail.send(message.into())
.map_err(|_| eprintln!("Couldn't send password reset email")) .map_err(|_| warn!("Couldn't send password reset email"))
.ok(); .ok();
} }
} }

View File

@ -3,6 +3,7 @@ use activitypub::{
collection::{OrderedCollection, OrderedCollectionPage}, collection::{OrderedCollection, OrderedCollectionPage},
}; };
use diesel::SaveChangesDsl; use diesel::SaveChangesDsl;
use tracing::{info, warn};
use rocket::{ use rocket::{
http::{ContentType, Cookies}, http::{ContentType, Cookies},
request::LenientForm, request::LenientForm,
@ -67,9 +68,9 @@ pub fn details(
Ok(article) => { Ok(article) => {
Post::from_activity(&fetch_rockets, article) Post::from_activity(&fetch_rockets, article)
.expect("Article from remote user couldn't be saved"); .expect("Article from remote user couldn't be saved");
println!("Fetched article from remote user"); info!("Fetched article from remote user");
} }
Err(e) => println!("Error while fetching articles in background: {:?}", e), Err(e) => warn!("Error while fetching articles in background: {:?}", e),
} }
} }
}); });