/// <summary> /// 获取日志列表 /// </summary> /// <param name="DbFilePath">数据库相对URL</param> /// <param name="bTime">开始时间</param> /// <param name="eTime">结束时间</param> /// <param name="Level">等级</param> /// <param name="Type">类型</param> /// <param name="UserID">用户ID</param> /// <param name="UserName">用户名</param> /// <param name="UserIP">访问IP</param> /// <param name="Message">消息</param> /// <param name="Data">数据</param> /// <returns></returns> public static DataTable GetLogs(string DbFilePath , string bTime = "", string eTime = "", string Type = "", string UserID = "" , string UserName = "", string UserIP = "", string Message = "", string Data = "" ) { return(LogDbHelper.GetLogs(DbFilePath, bTime, eTime, Type, UserID, UserName, UserIP, Message, Data)); }
protected void Application_Start() { AutofacBootstrap.CoreAutoFacInit(); AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); // JobConfig.JobRegister(); int minWorker, minIOC; ThreadPool.GetMinThreads(out minWorker, out minIOC); LogDbHelper.LogInfo($"线程池最大工作线程数-{minWorker}/IO线程数-${minIOC}", "Global => Application_Start", OperationType.Other); if (ThreadPool.SetMinThreads(LsConstant.ThreadPoolCount, LsConstant.ThreadPoolCount)) { LogDbHelper.LogInfo("设置线程池最大工作线程数/IO线程数成功", "Global => Application_Start", OperationType.Other); } else { LogDbHelper.LogError("设置线程池最大工作线程数/IO线程数成功", "Global => Application_Start", OperationType.Other); } JobScheduler.Start(); AutoMapperConfig.RegisterMappings(); log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath("log4net.config"))); }
public IList <LotteryData> RequestNewDatas() { if (_iscrawlingData) { return(null); } _iscrawlingData = true; try { LogDbHelper.LogDebug("正在从" + _dataSite.Name + "爬取数据", GetType().FullName + "=>RequestNewDatas", OperationType.Job); var dataList = CrawNewDatas(); if (dataList.Count <= 0) { LogDbHelper.LogDebug("从" + _dataSite.Name + "爬取数据失败,没有获取到最新的数据", GetType().FullName + "=>RequestNewDatas", OperationType.Job); } else { LogDbHelper.LogDebug("从" + _dataSite.Name + "爬取数据成功,共爬取到" + dataList.Count + "条数据", GetType().FullName + "=>RequestNewDatas", OperationType.Job); } return(dataList); } catch (Exception e) { LogDbHelper.LogError("从" + _dataSite.Name + "爬取数据失败,原因" + e.Message, GetType().FullName + "=>RequestNewDatas", OperationType.Job); return(null); } finally { _iscrawlingData = false; } }
public void Execute(IJobExecutionContext context) { lock (_lock) { if (_shuttingDown) { return; } try { if (isFirstStartService) { LotteryEngine.Init(); isFirstStartService = false; LogDbHelper.LogInfo(string.Format("{0}彩种定时执行任务Job开始(First Start)", _LotteryType), GetType().FullName + "=>Start", OperationType.Job); _dataUpdateContainer.Execute(); } else { if (DateTime.Now > NextLotteryTime || NextLotteryTime - DateTime.Now < TimeSpan.FromSeconds(_lotteryUpdateConfig.Interval * 3)) { _dataUpdateContainer.Execute(); } } } catch (Exception ex) { LogDbHelper.LogFatal(ex, GetType() + "Execute", OperationType.Job); } } }
public void InsertUserPlans(string userId, LotteryType lotteryType, UserBasicNorm userBasicNorm, IList <int> planIds) { string sqlStr1 = "INSERT INTO [dbo].[LotteryAnalyseNorms]([Id],[PlanId],[PlanCycle],[LastStartPeriod],[ForecastCount],[BasicHistoryCount] ,[UnitHistoryCount],[HotWeight],[SizeWeight]" + " ,[ThreeRegionWeight],[MissingValueWeight],[OddEvenWeight],[Modulus],[LotteryType],[Enable],[IsDefault],[CreatTime],[CreateUserId])" + " VALUES(@Id, @PlanId, @PlanCycle, @LastStartPeriod, @ForecastCount, @BasicHistoryCount, @UnitHistoryCount, @HotWeight, @SizeWeight, @ThreeRegionWeight, @MissingValueWeight" + ", @OddEvenWeight, @Modulus, @LotteryType, @ENABLE, @IsDefault, GETDATE(), @CreateUserId)"; string sqlStr2 = "INSERT INTO [dbo].[UserAnylseNorms]([Id],[UserId],[PlanId],[LotteryAnalyseNormId],[LotteryType],[CreatTime])" + " VALUES(@Id, @UserId,@PlanId, @LotteryAnalyseNormId, @LotteryType, GETDATE())"; using (var cn = LotteryDbConnection) { cn.Open(); using (var trans = cn.BeginTransaction()) { try { foreach (var planId in planIds) { var lotteryAnalyseNorm = new LotteryAnalyseNorm() { PlanId = planId, BasicHistoryCount = userBasicNorm.BasicHistoryCount, CreateUserId = userId, ForecastCount = userBasicNorm.ForecastCount, HotWeight = userBasicNorm.HotWeight, LastStartPeriod = 0, // Todo: set LastStartPeriod LotteryType = lotteryType.ToString(), UnitHistoryCount = userBasicNorm.UnitHistoryCount, Modulus = userBasicNorm.Modulus, OddEvenWeight = userBasicNorm.OddEvenWeight, MissingValueWeight = userBasicNorm.MissingValueWeight, ThreeRegionWeight = userBasicNorm.ThreeRegionWeight, SizeWeight = userBasicNorm.SizeWeight, PlanCycle = userBasicNorm.PlanCycle, }; var userAnalyseNorm = new UserAnylseNorm() { LotteryAnalyseNormId = lotteryAnalyseNorm.Id, LotteryType = lotteryType.ToString(), UserId = userId, PlanId = planId, }; cn.Execute(sqlStr1, lotteryAnalyseNorm, trans); cn.Execute(sqlStr2, userAnalyseNorm, trans); } trans.Commit(); } catch (Exception ex) { trans.Rollback(); LogDbHelper.LogError(ex, GetType() + "=>InsertUserPlans"); throw ex; } } } }
public void Stop(bool immediate) { // Locking here will wait for the lock in Execute to be released until this code can continue. lock (_lock) { _shuttingDown = true; } LogDbHelper.LogInfo(string.Format("{0}彩种定时执行任务Job结束", _LotteryType), GetType().FullName + "=>Stop", OperationType.Job); HostingEnvironment.UnregisterObject(this); }
/// <summary> /// 调试记录 /// </summary> /// <param name="Message"></param> /// <param name="Data"></param> /// <param name="LogType"></param> /// <param name="IsUnUserAuthentication">是否不经过用户验证</param> public static void Debug(string Message, object Data = null, string LogType = "系统", bool IsUnUserAuthentication = false) { try { if (LogLevel.CanLog("debug")) { LogContent content = CreateLogContent("debug", Message, Data, LogType, IsUnUserAuthentication); LogDbHelper.Write(content.Time.ToString("yyyyMMdd") + "_debug", content); } } catch { } }
internal void PutThisRegionData(KeyValuePair <int, PeriodNumberInfo> keyValuePair) { if (keyValuePair.Value.ThreeRegionShape == _regionShape) { if (!_keyNumbers.ContainsKey(keyValuePair.Key)) { _keyNumbers.Add(keyValuePair); } else { LogDbHelper.LogDebug("已经存在了当前期" + keyValuePair.Key + "的数据分析", GetType() + "PutThisRegionData"); } } ; }
public override void OnException(HttpActionExecutedContext actionExecutedContext) { var exception = actionExecutedContext.Exception; //全局异常捕获,记录未被捕获的异常 LogDbHelper.LogFatal(exception, actionExecutedContext.Request.RequestUri.OriginalString + "=>" + actionExecutedContext.Request.Method, OperationType.Exception ); actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(HttpStatusCode.InternalServerError, ResponseUtils.ErrorResult <object>(exception)); base.OnException(actionExecutedContext); }
protected void Application_End() { LogDbHelper.LogWarn("应用停止,IIS将应用回收", "Global => Application_End", OperationType.Other); Thread.Sleep(1000); try { //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start string url = Utils.GetConfigValuesByKey("EndAppTriggerRestartUrl"); HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流 LogDbHelper.LogWarn("App Restart Success", "Global => Application_End", OperationType.Other); } catch (Exception ex) { LogDbHelper.LogError("App Restart Failure" + ex.Message, "Global => Application_End", OperationType.Other); } }
protected virtual void WriteData <TEntity>(Func <TEntity, ValidationResult> func, TEntity entity) where TEntity : BaseEntity { BeginTransaction(); ValidationResult.Add(func(entity)); if (ValidationResult.IsValid) { if (!Commit()) { throw new LSException("数据保存失败,Data:" + entity.ToJsonString() + ",Action:" + GetType().FullName + "=>" + func.Method.Name); } if (!ValidationResult.IsSet(LsConstant.AuditLogKey) || !ValidationResult.GetData <bool>(LsConstant.AuditLogKey)) { LogDbHelper.LogInfo("数据保存成功.Data:" + entity.ToJsonString(), GetType().FullName + "=>" + func.Method.Name); } } else { LogDbHelper.LogFatal("数据保存失败,原因:" + ValidationResult.Errors.ToJsonString(), GetType().FullName + "=>" + func.Method.Name); } }
/// <summary> /// 获取日志列表 /// </summary> /// <param name="DbFilePath">数据库相对URL</param> /// <param name="bTime">开始时间</param> /// <param name="eTime">结束时间</param> /// <param name="Level">等级</param> /// <param name="Type">类型</param> /// <param name="UserID">用户ID</param> /// <param name="UserName">用户名</param> /// <param name="UserIP">访问IP</param> /// <param name="Message">消息</param> /// <param name="Data">数据</param> /// <returns></returns> public static List <Dictionary <string, object> > GetLogs2(string DbFilePath , string bTime = "", string eTime = "", string Type = "", string UserID = "" , string UserName = "", string UserIP = "", string Message = "", string Data = "" ) { using (DataTable dt = LogDbHelper.GetLogs(DbFilePath, bTime, eTime, Type, UserID, UserName, UserIP, Message, Data)) { List <Dictionary <string, object> > table = new List <Dictionary <string, object> >(); foreach (DataRow row in dt.Rows) { Dictionary <string, object> _row = new Dictionary <string, object>(); _row["fileName"] = Path.GetFileName(DbFilePath); _row["filePath"] = DbFilePath; foreach (DataColumn dc in dt.Columns) { _row[dc.ColumnName] = row[dc.ColumnName]; } table.Add(_row); } return(table); } }
private void RequestData(DataSite dataSite) { var dataUpdateItem = ObtainDataUpdateItemByReflect(dataSite); if (dataUpdateItem == null) { throw new LSException("获取彩票开始数据数据爬取器失败.=>" + dataSite.Name + dataSite.Id); } var newDataList = dataUpdateItem.RequestNewDatas(); lock (_lockObject) { if (newDataList != null && newDataList.Count > 0) { //必须排序 newDataList = newDataList.OrderBy(p => p.Period).ToList(); foreach (var newData in newDataList) { if (!_lotteryDataAppService.ExsitData(_lotteryDataJob.LotteryType.ToString(), newData.Period)) { var lastLotteryData = _lotteryDataAppService.Insert(newData); _lastPeriod = lastLotteryData.Period; string key = AppUtils.GetLotteryRedisKey(lastLotteryData.LotteryType, LsConstant.LastLotteryDataCacheKey); CacheHelper.SetCache(key, lastLotteryData); // todo:更新彩票分析数据 var lotteryEngine = LotteryEngine.GetLotteryEngine( Utils.StringConvertEnum <LotteryType>(lastLotteryData.LotteryType)); lotteryEngine.CalculateNextLotteryData(); } } LogDbHelper.LogDebug(string.Format("更新彩票{0}开奖数据数据成功,共{1}条数据", _lotteryDataJob.LotteryType, newDataList.Count), GetType().FullName + "=>RequestData", OperationType.Job); _lotteryDataJob.NextLotteryTime = _lotteryUpdateConfig.NextLotteryTime; } } }
public LotteryData Insert(LotteryData newData) { var redisKey = AppUtils.GetLotteryRedisKey(newData.LotteryType, LsConstant.LotteryDataCacheKey); try { CacheHelper.AddCacheListItem(redisKey, newData); if (CacheHelper.GetCache <IList <LotteryData> >(redisKey).Count >= LsConstant.LOAD_HISTORY_LOTTERYDATA) { //var mostOldLottery = RedisHelper.GetAll<LotteryData>(redisKey).Last(); //RedisHelper.RemoveList(redisKey, mostOldLottery); } } catch (Exception ex) { LogDbHelper.LogError(ex, GetType() + "UpdateLotteryDataCache"); throw ex; } var lotteryDataId = _lotteryDapperService.Add(newData); return(CacheHelper.GetCache <IList <LotteryData> >(redisKey).First(p => p.Id == newData.Id)); }
/// <summary> /// 获取日志数据 /// </summary> /// <param name="DbFilePath">数据库相对URL</param> /// <param name="ID">日志ID</param> /// <returns></returns> public static DataTable GetLogData(string DbFilePath, string ID) { return(LogDbHelper.GetLogData(DbFilePath, ID)); }
public LoginResult Login(string accountName, string password) { var userInfo = ((IUserDapperRepository)_dapperRepository).GetUserByAccountName(accountName); LoginResult loginResult = null; LoginResultType loginResultType; // 1. 判断是否存在用户 if (userInfo == null) { loginResultType = LoginResultType.InvalidUserNameAccount; loginResult = new LoginResult(loginResultType); LogDbHelper.LogWarn("登录失败,不存在用户{0}", GetType().FullName + "Login", OperationType.Account); return(loginResult); } // 2. 判断密码是否正确 else if (!AppUtils.VerifyPassword(accountName, password, userInfo.Password, userInfo.UserRegistType)) { loginResultType = LoginResultType.InvalidPassword; loginResult = new LoginResult(loginResultType); } // 3. 判断用户状态是否被激活 else if (!userInfo.IsActive) { loginResultType = LoginResultType.UserIsNotActive; loginResult = new LoginResult(loginResultType); } // 4.判断用户是否已经登录,如果登录了,提示用户不要重复登录 //else if (!string.IsNullOrWhiteSpace(userInfo.TokenId)) //{ // loginResultType = LoginResultType.UserAlreadyLogged; // loginResult = new LoginResult(loginResultType); //} else { loginResult = new LoginResult(userInfo, accountName, userInfo.UserRegistType); } try { if (loginResult.ResultType != LoginResultType.Success) { ((IUserDapperRepository)_dapperRepository).LoginFail(userInfo.Id, accountName, loginResult.ResultType); LogDbHelper.LogWarn("登录失败, 原因:" + loginResult.LoginResultMsg, GetType().FullName + "Login", OperationType.Account); } else { ((IUserDapperRepository)_dapperRepository).LoginSuccess(userInfo.Id, accountName, loginResult.ResultType, loginResult.TokenId, loginResult.LoginTime); // :todo 缓存TokenId LogDbHelper.LogInfo(loginResult.LoginResultMsg, GetType().FullName + "Login", OperationType.Account); } } catch (Exception ex) { ((IUserDapperRepository)_dapperRepository).LoginFail(userInfo.Id, accountName, loginResult.ResultType); LogDbHelper.LogError("登录失败, 原因:" + ex.ToString(), GetType().FullName + "Login", OperationType.Account); loginResult = new LoginResult(ex); } return(loginResult); }
public void UpdateUserPlans(string userId, LotteryType lotteryType, UserBasicNorm userBasicNorm, IList <int> planIds, IList <int> userOldLotteryPlanIds) { string sqlStr1 = "SELECT * FROM [dbo].[UserAnylseNorms] WHERE UserId=@UserId AND LotteryType=@LotteryType AND PlanId=@PlanId"; string sqlStr2 = "INSERT INTO [dbo].[UserAnylseNorms]([Id],[UserId],[PlanId],[LotteryAnalyseNormId],[LotteryType],[CreatTime])" + " VALUES(@Id, @UserId,@PlanId, @LotteryAnalyseNormId, @LotteryType, GETDATE())"; string sqlStr2_1 = "INSERT INTO [dbo].[LotteryAnalyseNorms]([Id],[PlanId],[PlanCycle],[LastStartPeriod],[ForecastCount],[BasicHistoryCount] ,[UnitHistoryCount],[HotWeight],[SizeWeight]" + " ,[ThreeRegionWeight],[MissingValueWeight],[OddEvenWeight],[Modulus],[LotteryType],[Enable],[IsDefault],[CreatTime],[CreateUserId])" + " VALUES(@Id, @PlanId, @PlanCycle, @LastStartPeriod, @ForecastCount, @BasicHistoryCount, @UnitHistoryCount, @HotWeight, @SizeWeight, @ThreeRegionWeight, @MissingValueWeight" + ", @OddEvenWeight, @Modulus, @LotteryType, @ENABLE, @IsDefault, GETDATE(), @CreateUserId)"; string sqlStr3 = "SELECT * FROM [dbo].[LotteryAnalyseNorms] WHERE Id=@Id"; string sqlStr4 = "DELETE [dbo].[UserAnylseNorms] WHERE Id = @Id"; string sqlStr5 = "UPDATE [dbo].[LotteryAnalyseNorms]" + "SET [LastStartPeriod] = @LastStartPeriod" + ",[Enable] = @Enable" + ",[ModifyTime] = GETDATE()" + " WHERE [Id] = @Id"; string lotteryAnalyseNormHashKey = string.Format(LsConstant.LotteryAnalyseNormRedisKey, lotteryType); using (var cn = LotteryDbConnection) { cn.Open(); using (var trans = cn.BeginTransaction()) { try { // 1. 遍历更改的planIds foreach (var planId in planIds) { var userAnylseNorm = cn.QuerySingleOrDefault <UserAnylseNorm>(sqlStr1, new { UserId = userId, LotteryType = lotteryType.ToString(), PlanId = planId, }, trans); // 如果用户还没有添加过该计划 if (userAnylseNorm == null) { #region 用户没有添加过该计划 var lotteryAnalyseNorm = new LotteryAnalyseNorm() { PlanId = planId, BasicHistoryCount = userBasicNorm.BasicHistoryCount, CreateUserId = userId, ForecastCount = userBasicNorm.ForecastCount, HotWeight = userBasicNorm.HotWeight, LastStartPeriod = 0, // Todo: set LastStartPeriod LotteryType = lotteryType.ToString(), UnitHistoryCount = userBasicNorm.UnitHistoryCount, Modulus = userBasicNorm.Modulus, OddEvenWeight = userBasicNorm.OddEvenWeight, MissingValueWeight = userBasicNorm.MissingValueWeight, ThreeRegionWeight = userBasicNorm.ThreeRegionWeight, SizeWeight = userBasicNorm.SizeWeight, PlanCycle = userBasicNorm.PlanCycle, }; userAnylseNorm = new UserAnylseNorm() { LotteryAnalyseNormId = lotteryAnalyseNorm.Id, LotteryType = lotteryType.ToString(), UserId = userId, PlanId = planId, }; cn.Execute(sqlStr2_1, lotteryAnalyseNorm, trans); cn.Execute(sqlStr2, userAnylseNorm, trans); RedisHelper.SetHash(lotteryAnalyseNormHashKey, lotteryAnalyseNorm.Id, lotteryAnalyseNorm); #endregion } else { #region 用户添加过该计划 var lotteryAnalyseNorm = cn.QuerySingle <LotteryAnalyseNorm>(sqlStr3, new { Id = userAnylseNorm.LotteryAnalyseNormId }, trans); if (!lotteryAnalyseNorm.Enable) { lotteryAnalyseNorm.Enable = true; lotteryAnalyseNorm.ModifyTime = DateTime.Now; lotteryAnalyseNorm.LastStartPeriod = 0; // Todo: set LastStartPeriod cn.Execute(sqlStr5, new { lotteryAnalyseNorm.Id, lotteryAnalyseNorm.Enable, LatestStartPeriod = lotteryAnalyseNorm.LastStartPeriod }, trans); RedisHelper.SetHash(lotteryAnalyseNormHashKey, lotteryAnalyseNorm.Id, lotteryAnalyseNorm); } #endregion } } // 2. 将旧计划且当前没有选的计划移除 #region 将旧计划且当前没有选的计划移除 foreach (var oldPlanId in userOldLotteryPlanIds) { if (planIds.Contains(oldPlanId)) { continue; } var userAnylseNorm = cn.QuerySingleOrDefault <UserAnylseNorm>(sqlStr1, new { UserId = userId, LotteryType = lotteryType.ToString(), PlanId = oldPlanId, }, trans); if (userAnylseNorm != null) { cn.Execute(sqlStr4, new { Id = userAnylseNorm.Id }, trans); #region 修改LotteryAnalyseNorm 指标 var lotteryAnalyseNorm = cn.QuerySingle <LotteryAnalyseNorm>(sqlStr3, new { Id = userAnylseNorm.LotteryAnalyseNormId }, trans); if (lotteryAnalyseNorm.Enable) { lotteryAnalyseNorm.Enable = false; lotteryAnalyseNorm.LastStartPeriod = 0; // Todo: set LastStartPeriod cn.Execute(sqlStr5, new { lotteryAnalyseNorm.Id, lotteryAnalyseNorm.Enable, LatestStartPeriod = lotteryAnalyseNorm.LastStartPeriod }, trans); RedisHelper.Remove(lotteryAnalyseNormHashKey, lotteryAnalyseNorm.Id); } #endregion } } #endregion trans.Commit(); } catch (Exception ex) { LogDbHelper.LogError(ex, GetType().FullName + "UpdateUserPlans"); trans.Rollback(); throw ex; } } } }
/// <summary> /// 获取日志数据库列表 /// </summary> /// <param name="yearStr">4位年份字符串</param> /// <param name="monthStr">2位月份字符串</param> /// <param name="level">日志等级</param> /// <returns></returns> public static List <LogDbFile> GetLogDbFileList(string yearStr = "", string monthStr = "", string level = "") { return(LogDbHelper.GetLogDbFileList(yearStr, monthStr, level)); }