Tweak logging

This commit is contained in:
timvisee 2021-11-08 17:20:21 +01:00
parent a8375534ed
commit a1b64a2b24
No known key found for this signature in database
GPG Key ID: B8DB720BC383E172
6 changed files with 31 additions and 20 deletions

View File

@ -19,21 +19,31 @@ pub(crate) mod status;
pub(crate) mod types; pub(crate) mod types;
pub(crate) mod util; pub(crate) mod util;
use std::env;
use clap::App; use clap::App;
/// Main entrypoint. /// Main entrypoint.
#[tokio::main] #[tokio::main]
async fn main() -> Result<(), ()> { async fn main() -> Result<(), ()> {
// Initialize logging // Initialize logger
// TODO: set default levels! init_log();
let _ = dotenv::dotenv();
pretty_env_logger::init();
// Build clap app, invoke intended action // Build clap app, invoke intended action
let app = cli::app(); let app = cli::app();
invoke_action(app).await invoke_action(app).await
} }
/// Initialize logger.
fn init_log() {
// Set default log level, load from .env
env::set_var("RUST_LOG", "info");
let _ = dotenv::dotenv();
// Initialize logger
pretty_env_logger::init();
}
/// Invoke an action. /// Invoke an action.
async fn invoke_action<'a>(app: App<'a>) -> Result<(), ()> { async fn invoke_action<'a>(app: App<'a>) -> Result<(), ()> {
let matches = app.get_matches(); let matches = app.get_matches();

View File

@ -30,13 +30,13 @@ pub async fn monitor_server(config: Arc<Config>, state: Arc<ServerState>) {
loop { loop {
// Poll server state and update internal status // Poll server state and update internal status
trace!("Fetching status for {} ... ", addr); trace!(target: "lazymc::monitor", "Fetching status for {} ... ", addr);
let status = poll_server(addr).await; let status = poll_server(addr).await;
state.update_status(status); state.update_status(status);
// Sleep server when it's bedtime // Sleep server when it's bedtime
if state.should_sleep(&config) { if state.should_sleep(&config) {
info!("Server has been idle, sleeping..."); info!(target: "lazymc::montior", "Server has been idle, sleeping...");
state.kill_server(); state.kill_server();
} }

View File

@ -169,7 +169,7 @@ pub async fn read_packet<'a>(
let (consumed, len) = match types::read_var_int(&buf) { let (consumed, len) = match types::read_var_int(&buf) {
Ok(result) => result, Ok(result) => result,
Err(err) => { Err(err) => {
error!("Malformed packet, could not read packet length"); error!(target: "lazymc", "Malformed packet, could not read packet length");
return Err(err); return Err(err);
} }
}; };

View File

@ -59,7 +59,7 @@ impl ServerState {
/// Kill any running server. /// Kill any running server.
pub fn kill_server(&self) -> bool { pub fn kill_server(&self) -> bool {
if let Some(pid) = *self.pid.lock().unwrap() { if let Some(pid) = *self.pid.lock().unwrap() {
debug!("Sending kill signal to server"); debug!(target: "lazymc", "Sending kill signal to server");
kill_gracefully(pid); kill_gracefully(pid);
// TODO: should we set this? // TODO: should we set this?
@ -100,7 +100,7 @@ impl ServerState {
// If server just came online, update last active time // If server just came online, update last active time
if !was_online && online { if !was_online && online {
// TODO: move this somewhere else // TODO: move this somewhere else
info!("Server is now online"); info!(target: "lazymc::monitor", "Server is now online");
self.update_last_active_time(); self.update_last_active_time();
} }
@ -164,13 +164,13 @@ pub async fn start(
cmd.current_dir(&config.server.directory); cmd.current_dir(&config.server.directory);
cmd.kill_on_drop(true); cmd.kill_on_drop(true);
info!("Starting server..."); info!(target: "lazymc", "Starting server...");
let mut child = cmd.spawn()?; let mut child = cmd.spawn()?;
state.set_pid(Some(child.id().expect("unknown server PID"))); state.set_pid(Some(child.id().expect("unknown server PID")));
let status = child.wait().await?; let status = child.wait().await?;
info!("Server stopped (status: {})\n", status); info!(target: "lazymc", "Server stopped (status: {})\n", status);
// Reset online and starting state // Reset online and starting state
// TODO: also set this when returning early due to error // TODO: also set this when returning early due to error
@ -186,9 +186,9 @@ pub async fn start(
fn kill_gracefully(pid: u32) { fn kill_gracefully(pid: u32) {
#[cfg(unix)] #[cfg(unix)]
unsafe { unsafe {
debug!("Sending SIGTERM signal to {} to kill server", pid); debug!(target: "lazymc", "Sending SIGTERM signal to {} to kill server", pid);
let result = libc::kill(pid as i32, libc::SIGTERM); let result = libc::kill(pid as i32, libc::SIGTERM);
trace!("SIGTERM result: {}", result); trace!(target: "lazymc", "SIGTERM result: {}", result);
// TODO: send sigterm to childs as well? // TODO: send sigterm to childs as well?
// TODO: handle error if != 0 // TODO: handle error if != 0

View File

@ -28,7 +28,8 @@ pub async fn service(config: Arc<Config>) -> Result<(), ()> {
})?; })?;
info!( info!(
"Proxying egress {} to ingress {}", target: "lazymc",
"Proxying public {} to server {}",
config.public.address, config.server.address, config.public.address, config.server.address,
); );
@ -48,7 +49,7 @@ pub async fn service(config: Arc<Config>) -> Result<(), ()> {
let transfer = status::serve(client, inbound, config.clone(), server_state.clone()) let transfer = status::serve(client, inbound, config.clone(), server_state.clone())
.map(|r| { .map(|r| {
if let Err(err) = r { if let Err(err) = r {
warn!("Failed to serve status: {:?}", err); warn!(target: "lazymc", "Failed to serve status: {:?}", err);
} }
}); });
@ -57,7 +58,7 @@ pub async fn service(config: Arc<Config>) -> Result<(), ()> {
// When server is online, proxy all // When server is online, proxy all
let transfer = proxy::proxy(inbound, config.server.address).map(|r| { let transfer = proxy::proxy(inbound, config.server.address).map(|r| {
if let Err(err) = r { if let Err(err) = r {
warn!("Failed to proxy: {}", err); warn!(target: "lazymc", "Failed to proxy: {}", err);
} }
}); });

View File

@ -38,7 +38,7 @@ pub async fn serve(
Ok(Some(packet)) => packet, Ok(Some(packet)) => packet,
Ok(None) => break, Ok(None) => break,
Err(_) => { Err(_) => {
error!("Closing connection, error occurred"); error!(target: "lazymc", "Closing connection, error occurred");
break; break;
} }
}; };
@ -129,9 +129,9 @@ pub async fn serve(
} }
// Show unhandled packet warning // Show unhandled packet warning
debug!("Received unhandled packet:"); debug!(target: "lazymc", "Received unhandled packet:");
debug!("- State: {:?}", client.state()); debug!(target: "lazymc", "- State: {:?}", client.state());
debug!("- Packet ID: {}", packet.id); debug!(target: "lazymc", "- Packet ID: {}", packet.id);
} }
// Gracefully close connection // Gracefully close connection