---
title: "Regions, Structured Logs, TCP Proxying"
date: 2023-09-08
number: 0150
url: https://railway.com/changelog/2023-09-08-regions
---

# Regions, Structured Logs, TCP Proxying

Welcome y’all to Changelog #0150 🇺🇸

Welkom bij Changelog #0150 🇳🇱

Lai liao Changelog #0150 🇸🇬

Sometime around Changelog #023, we received a request for adding regions to Railway.

Now, we knew we wanted to do regions. It’s kinda a tablestakes feature right? But we wanted the regions experience to be “magical,” just like every other part of the product. You shouldn’t need to turn off boxes or anything like that — just add or remove your boxes from any region around the world and have that “just work.”

It took us a while, but like all good things, we think this has been worth the wait. Today, Regions is available in [Priority Boarding](https://docs.railway.app/reference/priority-boarding). You just change the region and we’ll automatically spin up the new region and cut over seamlessly.

Now let’s get into the details, shall we?

## Regions to Priority Boarding

![](https://res.cloudinary.com/railway/image/upload/v1694226965/regions_ogfjbq.png)

Setting up a region is as simple as setting the `RAILWAY_REGION` variable. We wanted to move quickly, so we literally didn’t have time to put in a dropdown. It’s a “We’re Sorry”/”You’re Welcome” type of situation. 😅

Teams in Priority Boarding can set the above variable to the following property and have it deployed, seamlessly, in the following regions:

- `RAILWAY_REGION=us-west1` Oregon, USA
- `RAILWAY_REGION=us-east4` Virginia, USA
- `RAILWAY_REGION=europe-west4` Amsterdam, Netherlands
- `RAILWAY_REGION=asia-southeast1` Singapore, Singapore? (Guess who failed Geography 🙃)

***This feature is currently limited to Pro users and above who are enrolled in Priority Boarding.***

Want more regions? Want the ability to run replicas in other regions? Let us know [here](https://feedback.railway.app/feature-requests)! Or, hit us up on [Discord](https://discord.gg/railway)!

## Structured Logs to Priority Boarding

![](https://res.cloudinary.com/railway/image/upload/v1694226965/Untitled_14_y3nshx.png)

It is now possible to emit structured JSON logs from your deployments! 

This is useful for a couple of reasons.

- When you’d like to preserve multi-line logs, like stack traces
- When you’d like to add custom attributes to filter by (via `@attribute:value`)

For the initial release, we’re supporting the ability to view and filter by custom attributes. Meanwhile, we’re working on more goodies like custom attribute UI columns, log levels, and more. 

Utilizing structured logs is as simple as … emitting the structured logs. Checkout the [docs](https://docs.railway.app/deploy/logging#structured-logs), or skip it and just start using your favorite logger. (We like [Winston](https://github.com/winstonjs/winston) and [zlog](https://github.com/HardySimpson/zlog).)

Once you get the hang of it, let us know what else you’d like to see on [Discord](https://discord.gg/railway).

Log on!

## TCP Proxying to Priority Boarding

One of the things that we’ve wanted on Railway for a long time is the ability to expose your service to the public internet over TCP rather than HTTP. 

With TCP Proxying, we’re introducing a new primitive that unlocks *a lot* of stuff. First and foremost of which is the ability to deploy databases other [Postgres](https://docs.railway.app/databases/postgresql), [MySQL](https://docs.railway.app/databases/mysql), [Redis](https://docs.railway.app/databases/redis), and [Mongo](https://docs.railway.app/databases/mongodb)  to Railway.

For [Priority Boarding](https://docs.railway.app/reference/priority-boarding) users, it’s now possible to create a TCP proxy in the service settings and then specify the port that you’d like to proxy to. Any TCP traffic sent to the generated domain and port will be proxied to your service at the port you specify. Check out [the docs](https://docs.railway.app/deploy/exposing-your-app#tcp-proxying) for more info.

![](https://res.cloudinary.com/railway/image/upload/v1694226965/Untitled_15_f2axvz.png)

TCP proxies can also be added to templates on the `/button` page. Check out the new [pgvector template](https://railway.app/template/3jJFCA) for an example.

[Image: Specifying a port for TCP proxy in a template]

## Improvements and Fixes

- We added support for Bun 1.0 (when the Nix Archive updates from [this PR](https://github.com/NixOS/nixpkgs/pull/254046))
- We overhauled the look and feel of the Support pane when selecting `Support` in the user menu
- We added support for duplicating a template on [/account/templates](https://railway.app/account/templates) (Thank you Brody for the suggestion)
- We fixed an issue with the data tab when using Redis
- We added a `Run Now` button to Cron Jobs and added a shortcut to edit the cron schedule
- We improved the naming convention when creating a Private Network
- We improved the look and feel of the navigation and log loading experience in the Observability tab
- We added support for string values in filter tag expressions
- We added fixes for changing project/environment in Observability mode
- We updated Nixpacks to include Gradle 8 support and Moon support
- [Nixpacks](https://nixpacks.com/docs/getting-started) has been [upgraded to v.1.14.0](https://github.com/railwayapp/nixpacks/releases/tag/v1.14.0)