Skip to content

Commit

Permalink
Add semantic conventions for log media attributes
Browse files Browse the repository at this point in the history
Logs are transmitted via several common media, such as files and
iostreams. This PR establishes semantic conventions for describing the
file or iostream from which a log was read. Notably, these attributes
are not resource attributes, as the medium used to tranmit a log is not
considered to be the originator of the log.
  • Loading branch information
djaglowski committed Nov 9, 2021
1 parent 6677b53 commit b549570
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 2 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ release.

- Fix Syslog severity number mapping in the example.
([#2091](https://github.com/open-telemetry/opentelemetry-specification/pull/2091))
- Add log.* attributes.
([#2022](https://github.com/open-telemetry/opentelemetry-specification/pull/2022))

### Resource

Expand Down
4 changes: 2 additions & 2 deletions specification/logs/data-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -426,8 +426,8 @@ Description: Additional information about the specific event occurrence. Unlike
the `Resource` field, which is fixed for a particular source, `Attributes` can
vary for each occurrence of the event coming from the same source. Can contain
information about the request context (other than TraceId/SpanId). SHOULD follow
OpenTelemetry
[semantic conventions for Attributes](../trace/semantic_conventions/README.md).
OpenTelemetry [semantic conventions for Log Attributes](./semantic_conventions/README.md) or
[semantic conventions for Span Attributes](../trace/semantic_conventions/README.md).
This field is optional.

#### Errors and Exceptions
Expand Down
11 changes: 11 additions & 0 deletions specification/logs/semantic_conventions/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Log Attribute Semantic Conventions

**Status**: [Experimental](../../document-status.md)

The following semantic conventions for logs are defined:

* [Log Media](media.md): Semantic attributes that may be used in describing the source of a log.

Apart from semantic conventions for logs, [traces](../../trace/semantic_conventions/README.md), and [metrics](../../metrics/semantic_conventions/README.md),
OpenTelemetry also defines the concept of overarching [Resources](../../resource/sdk.md) with their own
[Resource Semantic Conventions](../../resource/semantic_conventions/README.md).
40 changes: 40 additions & 0 deletions specification/logs/semantic_conventions/media.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Semantic Conventions for Log Media

**Status**: [Experimental](../../document-status.md)

This document describes attributes for log media in OpenTelemetry. Log media are mechanisms by which logs are transmitted. Types of media include files, streams, network protocols, and os-specific logging services such as journald and Windows Event Log.

<!-- Re-generate TOC with `markdown-toc --no-first-h1 -i` -->

<!-- toc -->

- [Log Media](#log-media)
* [Log File](#log-file)
* [I/O Stream](#io-stream)

<!-- tocstop -->

## Log Media

**Note:** The OpenTelemetry specification defines a [Resource](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/sdk.md#resource-sdk) as `an immutable representation of the entity producing telemetry`.
The following attributes do not describe entities that produce telemetry. Rather, they describe mechanisms of log transmission.
As such, these should be recorded as Log Record attributes when applicable. They should not be recorded as Resource attributes.

### Log File

**Description:** A file to which log was emitted.

| Name | Notes and examples |
| ------------------------------- | ---------------------------------------------------------------------------------------- |
| `log.file.name` | The basename of the file. Example: `audit.log` |
| `log.file.path` | The full path to the file. Example: `/var/log/mysql/audit.log` |
| `log.file.name_resolved` | The basename of the file, with symlinks resolved. Example: `uuid.log` |
| `log.file.path_resolved` | The full path to the file, with symlinks resolved. Example: `/var/lib/docker/uuid.log` |

### I/O Stream

**Description:** The I/O stream to which the log was emitted.

| Name | Notes and examples |
| ------------------------------- | ---------------------------------------------------------------------------------------- |
| `log.iostream` | The stream associated with the log. SHOULD be one of: `stdout`, `stderr` |

0 comments on commit b549570

Please sign in to comment.