diff --git a/design.md b/design.md index f723493..2b57dea 100644 --- a/design.md +++ b/design.md @@ -7,7 +7,7 @@ - 前端:一个使用正经框架写的简洁美观的UI,无响应式设计。 ## 快照系统 -一个仿照git的直接针对文件的快照库,有Work Tree、Stage、Commit等概念。虽然快照系统直接集成于数据库系统,但对用户开放的操作是以整个火车票系统为单位的。火车票系统会每隔数秒或数千比交易执行一次暂存,此时数据库系统会把缓存写回磁盘,记录数据操作日志,以及在快照系统中执行Stash;打快照时,会依次把缓存写回磁盘、记录日志(以单笔业务为最小单位)、stage工作目录、创建commit。 +一个仿照git的直接针对文件的快照库,有Work Tree、Stage、Commit等概念。虽然快照系统作用于数据库系统,但何时触发操作由火车票系统决定,数据库系统会拿到一个用于暂存自己下辖文件的handler,但对用户开放的操作是以整个火车票系统为单位的。火车票系统会每隔数秒或数千比交易执行一次暂存,此时数据库系统会把缓存写回磁盘,记录数据操作日志,以及在快照系统中执行Stash;打快照时,会依次把缓存写回磁盘、记录日志(以单笔业务为最小单位)、stage工作目录、创建commit。暂存可以在运行时执行,但创建快照、还原快照、删除快照、从暂存区复原工作目录等功能无法在火车票系统运行时执行。 因为详细的数据库相关知识没学,所以正经并发和更细粒度的容错就不打算自己瞎搓了。 diff --git a/src/main.cpp b/src/main.cpp index 1edaad5..929595b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -63,10 +63,15 @@ int main(int argc, char *argv[]) { return 1; } if (log_enabled) { - if (log_file_name == "") - logger_ptr = spdlog::stderr_color_mt("stderr_logger"); - else - logger_ptr = spdlog::basic_logger_mt("file_logger", log_file_name); + try { + if (log_file_name == "") + logger_ptr = spdlog::stderr_color_mt("stderr_logger"); + else + logger_ptr = spdlog::basic_logger_mt("file_logger", log_file_name); + } catch (const spdlog::spdlog_ex &ex) { + std::cerr << "Log initialization failed: " << ex.what() << std::endl; + return 1; + } } LOG->info("Starting backend"); LOG->info("Compile optimization enabled: {}", optimize_enabled);