Пример #1
0
        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();
        }
Пример #2
0
        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();
                    }
                }
            }
        }
Пример #3
0
        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();
        }
Пример #4
0
        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();
        }
Пример #5
0
        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));
            }
        }