我有一个基本的实现,它调用一个存储过程,它向SQL数据库中的表添加一行。但是,此实现有很多开销,因为它尝试访问我尝试实现的每个日志的数据库(在一个函数调用中可能发生许多日志调用)。我想通过仅在调用函数结束时访问数据库来改进此实现。我也想使用这个函数几乎与使用log4net提供的记录器相同。
期望的实施:
class Object{
SQLLogger logger = SQLLogManager.GetLogger("My Object");
void foo(){
logger.Info("Info");
logger.Error("Error");
logger.Info("Info2");
//now when the function ends, the logger will access the DB and create 3 rows, disconnects
}
}
旧实施:
class Object{
SQLLogger logger = SQLLogManager.GetLogger("My Object");
void foo(){
logger.Info("Info");
//access DB and adds a row, disconnects
logger.Error("Error");
//access DB and adds a row, disconnects
logger.Info("Info2");
//access DB and adds a row, disconnects
}
}
问题: 如何检测函数何时结束(-ish)? - 也许我有一个存储X行的容器,只有当容器已满或定时器关闭时才访问数据库?