summaryrefslogtreecommitdiffstats
path: root/src/logger.rs
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-04-24 07:16:56 +0800
committerGitHub <noreply@github.com>2024-04-24 07:16:56 +0800
commit0a4c0413ef0154cde2e3485ec0415e6069596a23 (patch)
tree02527d5ee4b23b43a34bf90eeb817e1cc066d97c /src/logger.rs
parent9c6c9f10a27d0993636b453f39d8934c95c5c2b2 (diff)
downloadaichat-0a4c0413ef0154cde2e3485ec0415e6069596a23.tar.gz
feat: serve all LLMs as OpenAI-compatible API (#431)
Diffstat (limited to 'src/logger.rs')
-rw-r--r--src/logger.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/logger.rs b/src/logger.rs
new file mode 100644
index 0000000..f7ef2f5
--- /dev/null
+++ b/src/logger.rs
@@ -0,0 +1,40 @@
+use crate::config::WorkingMode;
+
+use anyhow::Result;
+use log::LevelFilter;
+use simplelog::{format_description, Config as LogConfig, ConfigBuilder};
+
+#[cfg(debug_assertions)]
+pub fn setup_logger(working_mode: WorkingMode) -> Result<()> {
+ let config = build_config();
+ if working_mode == WorkingMode::Serve {
+ simplelog::SimpleLogger::init(LevelFilter::Debug, config)?;
+ } else {
+ let file = std::fs::File::create(crate::config::Config::local_path("debug.log")?)?;
+ simplelog::WriteLogger::init(LevelFilter::Debug, config, file)?;
+ }
+ Ok(())
+}
+
+#[cfg(not(debug_assertions))]
+pub fn setup_logger(working_mode: WorkingMode) -> Result<()> {
+ let config = build_config();
+ if working_mode == WorkingMode::Serve {
+ simplelog::SimpleLogger::init(log::LevelFilter::Info, config)?;
+ }
+ Ok(())
+}
+
+fn build_config() -> LogConfig {
+ let log_filter = match std::env::var("AICHAT_LOG_FILTER") {
+ Ok(v) => v,
+ Err(_) => "aichat".into(),
+ };
+ ConfigBuilder::new()
+ .add_filter_allow(log_filter)
+ .set_time_format_custom(format_description!(
+ "[year]-[month]-[day]T[hour]:[minute]:[second].[subsecond digits:3]Z"
+ ))
+ .set_thread_level(LevelFilter::Off)
+ .build()
+}