public async Task Run() { int runCount = 0; while (!OperateLogQueue.Queue.IsEmpty && runCount++ < BatchLimitCount) { OperateLogQueue.Queue.TryDequeue(out OperateLogMessage message); // 有消息将数据写入数据库 if (message != null) { var settings = _logSettingCaching.GetCacheData(60 * 60 * 24); var setting = (from s in settings where s.Action == message.Action && s.Controller == message.Controller select s).FirstOrDefault(); if (setting != null && setting.IsRecord) { var detail = new OperateLogDetail { OperateAt = DateTime.Now, SettingId = setting.Id, OperatorAccount = message.Account, OperatorName = message.Name, Content = message.RequestContent, ResultCode = message.HttpResultCode, Uri = message.Uri }; await _logDetaiRrepository.AddAsync(detail); } } } await _systemIdentityDbUnitOfWork.SaveAsync(); }
public async Task DoWork() { // GetConsumingEnumerable在程序启动时会阻塞主线程,加上了这个delay就可以了 await Task.Delay(1); foreach (var message in OperateLogQueue.blockingCollection.GetConsumingEnumerable()) { // 有消息将数据写入数据库 if (message != null) { var settings = _logSettingCaching.GetCacheData(60 * 60 * 24); var setting = (from s in settings where s.Action == message.Action && s.Controller == message.Controller select s).FirstOrDefault(); if (setting != null && setting.IsRecord) { var detail = new OperateLogDetail { OperateAt = DateTime.Now, SettingId = setting.Id, OperatorAccount = message.Account, OperatorName = message.Name, Content = message.RequestContent, ResultCode = message.HttpResultCode, Uri = message.Uri }; await _logDetaiRrepository.AddAsync(detail); await _systemIdentityDbUnitOfWork.SaveAsync(); } } } }
public async Task Run() { // 清理过期的日志 var settings = _logSettingCaching.GetCacheData(); foreach (var setting in settings) { var expire = DateTime.Now.AddDays(-setting.SaveTime); await _logDetaiRrepository.RemoveAsync(d => d.OperateAt < expire && d.SettingId == setting.Id); } await _systemIdentityDbUnitOfWork.SaveAsync(); }
public async Task Run() { // 清理过期的日志 var setting = _loginSetting.GetCacheData(60 * 60 * 24).FirstOrDefault(); if (setting != null) { var expire = DateTime.Now.AddDays(-setting.SaveTime); await _loginLogDetail.RemoveAsync(d => d.OperateAt < expire); } await _systemIdentityDbUnitOfWork.SaveAsync(); }
public async Task DoWork() { while (true) { // 清理过期的日志 var setting = _loginSetting.GetCacheData(60 * 60 * 24).FirstOrDefault(); if (setting != null) { var expire = DateTime.Now.AddDays(-setting.SaveTime); await _loginLogDetail.RemoveAsync(d => d.OperateAt < expire); } await _systemIdentityDbUnitOfWork.SaveAsync(); // 一小时清理一次 await Task.Delay(TimeSpan.FromHours(1)); } }
public async Task DoWork() { while (true) { // 清理过期的日志 var settings = _logSettingCaching.GetCacheData(); foreach (var setting in settings) { var expire = DateTime.Now.AddDays(-setting.SaveTime); await _logDetaiRepository.RemoveAsync(d => d.OperateAt < expire && d.SettingId == setting.Id); } await _systemIdentityDbUnitOfWork.SaveAsync(); // 一小时清理一次 await Task.Delay(TimeSpan.FromHours(1)); } }