main: add a separate logfile to the logger
This commit is contained in:
+9
-7
@@ -1,4 +1,4 @@
|
||||
use std::sync::Arc;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use async_openai::types::chat::ChatCompletionRequestMessage;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@@ -66,9 +66,9 @@ impl SaveData {
|
||||
}
|
||||
}
|
||||
|
||||
struct SysMessageLogger(Arc<tokio::sync::mpsc::UnboundedSender<String>>);
|
||||
struct SysMessageLogger<T>(Arc<tokio::sync::mpsc::UnboundedSender<String>>, Mutex<T>);
|
||||
|
||||
impl log::Log for SysMessageLogger {
|
||||
impl<T: std::io::Write + Send + Sync> log::Log for SysMessageLogger<T> {
|
||||
fn enabled(&self, _metadata: &log::Metadata) -> bool {
|
||||
true
|
||||
}
|
||||
@@ -76,7 +76,9 @@ impl log::Log for SysMessageLogger {
|
||||
fn flush(&self) {}
|
||||
|
||||
fn log(&self, record: &log::Record) {
|
||||
self.0.send(format!("{}", record.args())).unwrap();
|
||||
let msg = format!("{}", record.args());
|
||||
write!(self.1.lock().unwrap(), "{}\n", msg).unwrap();
|
||||
self.0.send(msg).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,10 +97,10 @@ async fn main() {
|
||||
|
||||
let (sys_message_sink, sys_message_src) = tokio::sync::mpsc::unbounded_channel();
|
||||
|
||||
static LOGGER: StaticCell<SysMessageLogger> = StaticCell::new();
|
||||
let logger = LOGGER.init(SysMessageLogger(Arc::new(sys_message_sink)));
|
||||
static LOGGER: StaticCell<SysMessageLogger<std::fs::File>> = StaticCell::new();
|
||||
let logger = LOGGER.init(SysMessageLogger(Arc::new(sys_message_sink), Mutex::new(std::fs::File::create("out.log").unwrap())));
|
||||
log::set_logger(logger).unwrap();
|
||||
log::set_max_level(log::LevelFilter::Info);
|
||||
log::set_max_level(log::LevelFilter::Debug);
|
||||
|
||||
dotenv::dotenv().ok();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user