private LogInfo LogInfoFromDataReader(SqlDataReader rdr)
 {
     var log = new LogInfo();
     log.Id = rdr.GetInt32(rdr.GetOrdinal("Id"));
     log.ChannelId = rdr.GetInt32(rdr.GetOrdinal("ChannelId"));
     if (!rdr.IsDBNull(rdr.GetOrdinal("UserUid")))
         log.UserUid = rdr.GetString(rdr.GetOrdinal("UserUid"));
     log.Title = rdr.GetString(rdr.GetOrdinal("Title"));
     log.Message = rdr.GetString(rdr.GetOrdinal("Message"));
     log.Level = rdr.GetString(rdr.GetOrdinal("Level"));
     if (!rdr.IsDBNull(rdr.GetOrdinal("StackTrace")))
         log.StackTrace = rdr.GetString(rdr.GetOrdinal("StackTrace"));
     log.LogTime = DateTime.SpecifyKind(rdr.GetDateTime(rdr.GetOrdinal("LogTime")), DateTimeKind.Local);
     return log;
 }
 public void Log(LogInfo log)
 {
     using (var con = new SqlConnection(ConfigHelp.ConnectionString))
     {
         con.Open();
         var cmd = con.CreateCommand();
         cmd.CommandText = @"insert into LogInfo (ChannelId,UserUid,Title,Message,StackTrace,Level,LogTime)
     values (@ChannelId,@UserUid,@Title,@Message,@StackTrace,@Level,@LogTime)";
         cmd.Parameters.Add(new SqlParameter("@ChannelId", log.ChannelId));
         cmd.Parameters.Add(new SqlParameter("@UserUid", log.UserUid ?? (object)DBNull.Value));
         cmd.Parameters.Add(new SqlParameter("@Title", log.Title));
         cmd.Parameters.Add(new SqlParameter("@Message", log.Message));
         cmd.Parameters.Add(new SqlParameter("@StackTrace", log.StackTrace ?? (object)DBNull.Value));
         cmd.Parameters.Add(new SqlParameter("@Level", log.Level));
         cmd.Parameters.Add(new SqlParameter("@LogTime", log.LogTime));
         cmd.ExecuteNonQuery();
     }
 }
 private static void LogPushResultToDatabase(PushContext context, string message, Exception ex)
 {
     var log = new LogInfo();
     log.ChannelId = context.Subscription.ChannelId;
     log.UserUid = context.Subscription.UserUid;
     log.Message = message;
     if (ex == null)
     {
         log.Title = "推送成功";
         log.Level = LogInfo.LEVEL_INFO;
     }
     else
     {
         log.Title = "推送失败";
         log.Level = LogInfo.LEVEL_WARN;
         log.StackTrace = ex.StackTrace;
     }
     log.LogTime = DateTime.Now;
     try
     {
         PushBo.Instance.Log(log);
     }
     catch (Exception e)
     {
         Logger.Log.Error(e);
     }
 }