1
Fork 0

switched to log4rs

This commit is contained in:
Andy Killorin 2023-12-22 09:40:35 -06:00
parent f7c5e3fdf5
commit bda32e34a9
Signed by: ank
GPG key ID: B6241CA3B552BCA4
5 changed files with 33 additions and 12 deletions

View file

@ -18,6 +18,8 @@ hilbert_index = "0.2.0"
hyper = "1.0.1" hyper = "1.0.1"
hyper-util = "0.1.1" hyper-util = "0.1.1"
indoc = "2.0.4" indoc = "2.0.4"
log = "0.4.20"
log4rs = "1.2.0"
nalgebra = { version = "0.32.3", features = ["serde-serialize"] } nalgebra = { version = "0.32.3", features = ["serde-serialize"] }
parking_lot = { version = "0.11", features = ["serde"] } parking_lot = { version = "0.11", features = ["serde"] }
pathfinding = "4.6.0" pathfinding = "4.6.0"

View file

@ -11,6 +11,7 @@ use axum::{
}; };
use blocks::{World, Position, Vec3}; use blocks::{World, Position, Vec3};
use indoc::formatdoc; use indoc::formatdoc;
use log::info;
use mine::TurtleMineJob; use mine::TurtleMineJob;
use rstar::{self, AABB, RTree}; use rstar::{self, AABB, RTree};
@ -90,6 +91,8 @@ async fn main() -> Result<(), Error> {
None => "save".into(), None => "save".into(),
})?; })?;
log4rs::init_file(SAVE.get().unwrap().join("log.yml"), Default::default())?;
let state = read_from_disk().await?; let state = read_from_disk().await?;
let state = LiveState::from_save(state); let state = LiveState::from_save(state);
@ -115,7 +118,7 @@ async fn main() -> Result<(), Error> {
let server = safe_kill::serve(server, listener).await; let server = safe_kill::serve(server, listener).await;
println!("writing"); info!("writing");
write_to_disk(state.read().await.save().await).await?; write_to_disk(state.read().await.save().await).await?;
server.closed().await; server.closed().await;
@ -180,7 +183,7 @@ async fn create_turtle(
state.tasks.push(VecDeque::new()); state.tasks.push(VecDeque::new());
println!("new turtle: {id}"); info!("new turtle: {id}");
Json(turtle::TurtleResponse { Json(turtle::TurtleResponse {
name: Name::from_num(id).to_str(), name: Name::from_num(id).to_str(),

View file

@ -1,4 +1,5 @@
use hilbert_index::FromHilbertIndex; use hilbert_index::FromHilbertIndex;
use log::{info, warn};
use nalgebra::SimdValue; use nalgebra::SimdValue;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use rstar::{self, AABB}; use rstar::{self, AABB};
@ -152,9 +153,10 @@ pub async fn mine(turtle: TurtleCommander, pos: Vec3, fuel: Position, storage: P
async fn refuel_needed(turtle: &TurtleCommander, volume: i32, fuel: Position) -> Option<()> { async fn refuel_needed(turtle: &TurtleCommander, volume: i32, fuel: Position) -> Option<()> {
Some(if (turtle.fuel().await as f64) < (2 * volume + (fuel.pos-turtle.pos().await.pos).abs().sum()) as f64 * 1.8 { Some(if (turtle.fuel().await as f64) < (2 * volume + (fuel.pos-turtle.pos().await.pos).abs().sum()) as f64 * 1.8 {
println!("refueling"); let name = turtle.name().await.to_str();
info!("{name}: refueling");
turtle.goto(fuel).await?; turtle.goto(fuel).await?;
println!("docked"); info!("{name}: docked");
refuel(turtle.clone()).await; refuel(turtle.clone()).await;
}) })
} }
@ -179,7 +181,7 @@ pub async fn mine(turtle: TurtleCommander, pos: Vec3, fuel: Position, storage: P
} }
if dump_filter(turtle.clone(), |i| USELESS.iter().any(|u| **u == i.name)).await > 12 { if dump_filter(turtle.clone(), |i| USELESS.iter().any(|u| **u == i.name)).await > 12 {
println!("storage rtb"); info!("storage rtb");
turtle.goto(storage).await?; turtle.goto(storage).await?;
dump(turtle.clone()).await; dump(turtle.clone()).await;
// while we're here // while we're here
@ -225,7 +227,7 @@ async fn refuel(turtle: TurtleCommander) {
let re = turtle.execute(Refuel).await; let re = turtle.execute(Refuel).await;
if let TurtleCommandResponse::Failure = re.ret { if let TurtleCommandResponse::Failure = re.ret {
// partial refuel, good enough // partial refuel, good enough
println!("only received {} fuel", turtle.fuel().await); warn!("only received {} fuel", turtle.fuel().await);
if turtle.fuel().await > 5000 { if turtle.fuel().await > 5000 {
break; break;
} else { } else {

View file

@ -1,3 +1,4 @@
use log::{error, info};
use tokio::net::TcpListener; use tokio::net::TcpListener;
use tokio::signal; use tokio::signal;
@ -28,7 +29,7 @@ pub(crate) async fn serve(server: Router, listener: TcpListener) -> Sender<()> {
result.unwrap() result.unwrap()
} }
_ = shutdown_signal() => { _ = shutdown_signal() => {
println!("cancelled connection"); info!("cancelled connection");
break; break;
} }
}; };
@ -52,12 +53,12 @@ pub(crate) async fn serve(server: Router, listener: TcpListener) -> Sender<()> {
tokio::select! { tokio::select! {
result = conn.as_mut() => { result = conn.as_mut() => {
if result.is_err() { if result.is_err() {
println!("req failed"); error!("req failed");
} }
break; break;
} }
_ = shutdown_signal() => { _ = shutdown_signal() => {
println!("starting shutdown"); info!("starting shutdown");
conn.as_mut().graceful_shutdown(); conn.as_mut().graceful_shutdown();
} }
} }

View file

@ -14,6 +14,10 @@ use anyhow::Ok;
use anyhow; use anyhow;
use anyhow::Context; use anyhow::Context;
use log::trace;
use log::warn;
use log::info;
use tokio::sync::OnceCell;
use tokio::sync::RwLock; use tokio::sync::RwLock;
use tokio::sync::mpsc; use tokio::sync::mpsc;
use tokio::sync::oneshot; use tokio::sync::oneshot;
@ -151,7 +155,7 @@ pub struct TurtleCommander {
pos: Arc<RwLock<Position>>, pos: Arc<RwLock<Position>>,
fuel: Arc<AtomicUsize>, fuel: Arc<AtomicUsize>,
max_fuel: Arc<AtomicUsize>, max_fuel: Arc<AtomicUsize>,
name: Arc<OnceCell<Name>>,
} }
impl TurtleCommander { impl TurtleCommander {
@ -164,6 +168,7 @@ impl TurtleCommander {
pos: Arc::new(RwLock::new(turtle.position)), pos: Arc::new(RwLock::new(turtle.position)),
fuel: Arc::new(AtomicUsize::new(turtle.fuel)), fuel: Arc::new(AtomicUsize::new(turtle.fuel)),
max_fuel: Arc::new(AtomicUsize::new(turtle.fuel_limit)), max_fuel: Arc::new(AtomicUsize::new(turtle.fuel_limit)),
name: Arc::new(OnceCell::new_with(Some(turtle.name))),
}) })
} }
@ -179,6 +184,10 @@ impl TurtleCommander {
resp resp
} }
pub async fn name(&self) -> Name {
self.name.get().unwrap().clone()
}
pub async fn pos(&self) -> Position { pub async fn pos(&self) -> Position {
self.pos.read().await.clone() self.pos.read().await.clone()
} }
@ -336,6 +345,10 @@ pub(crate) async fn process_turtle_update(
let info = TurtleInfo::from_update(update, turtle.name.clone(), turtle.position.clone()); let info = TurtleInfo::from_update(update, turtle.name.clone(), turtle.position.clone());
if let TurtleCommandResponse::Failure = info.ret {
warn!("{} command failure", turtle.name.to_str());
}
if let Some(send) = turtle.callback.take() { if let Some(send) = turtle.callback.take() {
send.send(info).unwrap(); send.send(info).unwrap();
} }
@ -351,12 +364,12 @@ pub(crate) async fn process_turtle_update(
_ => {} _ => {}
} }
turtle.queued_movement = cmd.unit(turtle.position.dir); turtle.queued_movement = cmd.unit(turtle.position.dir);
println!("{}: {cmd:?}", turtle.name.to_str()); info!("{}: {cmd:?}", turtle.name.to_str());
return Ok(cmd); return Ok(cmd);
} }
} }
println!("{} idle, connected", turtle.name.to_str()); trace!("{} idle, connected", turtle.name.to_str());
Ok(TurtleCommand::Wait(IDLE_TIME)) Ok(TurtleCommand::Wait(IDLE_TIME))
} }