Changing log line formats
Last updated 2023-01-20
Fastly's Real-Time Log Streaming feature allows you to change the format that your log messages are delivered in on select logging endpoints. We allow you to choose one of several formats:
- Blank is the default. There's no prefix — just your log message. This is useful when writing to JSON and CSV files.
- Classic is a legacy format based on RFC 3164. See Classic Format for more information.
- Loggly is a structured syslog prefix format based on RFC 5424.
- Logplex is a Heroku-style prefixed syslog format.
Updating endpoints to use a different format
A number of logging endpoints can be updated to use a message format other than the default via either the web interface or the API.
Using the web interface
Follow these instructions to update a logging endpoint using the web interface:
- Log in to the Fastly web interface.
- From the Home page, select the appropriate service. You can use the search box to search by ID, name, or domain.
- Click the Edit configuration button and then select the option to clone the active version. The Domains page appears.
- Click the Logging link. The Logging endpoints page appears.
- Click the name of a logging endpoint you want to edit. The Edit this endpoint page appears.
- Click the Advanced options link near the bottom of the page. The Advanced options appear.
- In the Select a log line format section, select a log line format for the logging endpoint.
- Click the Update button.
- Click the Activate button to deploy your configuration changes.
Using the API
Run the following command to update a logging endpoint using the API:
$ curl -X PUT -H 'Fastly-Key: FASTLY_API_TOKEN' -H 'Content-Type: application/json' 'https://api.fastly.com/service/<your Fastly service ID>/version/<version number>/logging/<logging endpoint>/<log name>' --data-binary '{"message_type":"<type>"}'
Keep in mind that the message_type
field is a per-object field. Updating it on one logging object will not change it on any other objects.
For example, to update a Google Cloud Storage logging endpoint named GCS Test
to use the blank
message type, the curl command would look something like this:
$ curl -X PUT -H 'Fastly-Key: FASTLY_API_TOKEN' -H 'Content-Type: application/json' 'https://api.fastly.com/service/SU1Z0isxPaozGVKXdv0eY/version/1/logging/gcs/GCS%20Test' --data-binary '{"message_type":"blank"}'
NOTE
The log name
included a space that needed to be URL encoded (the space into %20
).
Classic Format
Classic is a legacy format based on the RFC 3164 protocol. It is not, however, strictly compliant with RFC 3164. To make logging easier to synchronize across a global network, classic uses timestamps based on the RFC 3339 protocol, which specifies that timestamps include a timezone. RFC 3164, on the other hand, specifies local time without any timezone data.
The following example shows a message in the classic log format.
<134>2016-07-04T22:37:26Z cache-sjc3128 LogTest[62959]: <your log message>
The prefix begins with the message priority (always <134>
, which means Facility=Local0, Severity=Informational
), followed by the date and time the log was sent (2016-07-04T22:37:26Z
), the cache node it came from (in this case, cache-sjc3128
), the name of your log (LogTest
) and the ID of the process sending it (62959
).
Do not use this form to send sensitive information. If you need assistance, contact support.