Skip to content

Commit 1193b91

Browse files
authored
Add service.environment to stdlib formatter (#96)
* Add service.environment to stdlib formatter * CHANGELOG
1 parent bdce799 commit 1193b91

File tree

4 files changed

+28
-18
lines changed

4 files changed

+28
-18
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 2.1.0 (unreleased)
4+
5+
- Add support for `service.environment` from APM log correlation ([#96](https://github.com/elastic/ecs-logging-python/pull/96))
6+
37
## 2.0.2 (2023-05-17)
48

59
- Allow flit-core 3+ ([#94](https://github.com/elastic/ecs-logging-python/pull/94))

ecs_logging/_stdlib.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,20 @@
1919
import sys
2020
import time
2121
from traceback import format_tb
22+
2223
from ._meta import ECS_VERSION
2324
from ._utils import (
24-
merge_dicts,
25-
de_dot,
26-
json_dumps,
2725
TYPE_CHECKING,
2826
collections_abc,
29-
lru_cache,
27+
de_dot,
3028
flatten_dict,
29+
json_dumps,
30+
lru_cache,
31+
merge_dicts,
3132
)
3233

3334
if TYPE_CHECKING:
34-
from typing import Optional, Any, Callable, Dict, Sequence
35+
from typing import Any, Callable, Dict, Optional, Sequence
3536

3637
try:
3738
from typing import Literal, Union # type: ignore
@@ -235,6 +236,9 @@ def format_to_ecs(self, record):
235236
)
236237
extras.setdefault("trace.id", extras.pop("elasticapm_trace_id", None))
237238
extras.setdefault("service.name", extras.pop("elasticapm_service_name", None))
239+
extras.setdefault(
240+
"service.environment", extras.pop("elasticapm_service_environment", None)
241+
)
238242

239243
# Merge in any keys that were set within 'extra={...}'
240244
for field, value in extras.items():

tests/conftest.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
# specific language governing permissions and limitations
1616
# under the License.
1717

18+
import collections
1819
import datetime
1920
import json
21+
import logging
2022
import os
21-
import collections
2223
import sys
23-
import logging
24-
import elasticapm
2524

25+
import elasticapm
2626
import pytest
2727

2828

@@ -85,7 +85,9 @@ def validator(data_json):
8585
@pytest.fixture
8686
def apm():
8787
record_factory = logging.getLogRecordFactory()
88-
apm = elasticapm.Client({"SERVICE_NAME": "apm-service", "DISABLE_SEND": True})
88+
apm = elasticapm.Client(
89+
{"SERVICE_NAME": "apm-service", "ENVIRONMENT": "dev", "DISABLE_SEND": True}
90+
)
8991
yield apm
9092
apm.close()
9193
logging.setLogRecordFactory(record_factory)

tests/test_apm.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616
# under the License.
1717

1818
import json
19-
import sys
19+
import logging
20+
from io import StringIO
21+
2022
import elasticapm
23+
import structlog
2124
from elasticapm.handlers.logging import LoggingFilter
2225
from elasticapm.handlers.structlog import structlog_processor
26+
2327
import ecs_logging
24-
import logging
25-
import structlog
26-
import pytest
27-
from io import StringIO
2828

2929

3030
def test_elasticapm_structlog_log_correlation_ecs_fields(spec_validator, apm):
@@ -55,7 +55,7 @@ def test_elasticapm_structlog_log_correlation_ecs_fields(spec_validator, apm):
5555
"span": {"id": span_id},
5656
"trace": {"id": trace_id},
5757
"transaction": {"id": transaction_id},
58-
"service": {"name": "apm-service"},
58+
"service": {"name": "apm-service", "environment": "dev"},
5959
}
6060

6161

@@ -98,7 +98,7 @@ def test_elastic_apm_stdlib_no_filter_log_correlation_ecs_fields(apm):
9898
"span": {"id": span_id},
9999
"trace": {"id": trace_id},
100100
"transaction": {"id": transaction_id},
101-
"service": {"name": "apm-service"},
101+
"service": {"name": "apm-service", "environment": "dev"},
102102
}
103103

104104

@@ -142,7 +142,7 @@ def test_elastic_apm_stdlib_with_filter_log_correlation_ecs_fields(apm):
142142
"span": {"id": span_id},
143143
"trace": {"id": trace_id},
144144
"transaction": {"id": transaction_id},
145-
"service": {"name": "apm-service"},
145+
"service": {"name": "apm-service", "environment": "dev"},
146146
}
147147

148148

@@ -187,5 +187,5 @@ def test_elastic_apm_stdlib_exclude_fields(apm):
187187
},
188188
"message": "test message",
189189
"trace": {"id": trace_id},
190-
"service": {"name": "apm-service"},
190+
"service": {"name": "apm-service", "environment": "dev"},
191191
}

0 commit comments

Comments
 (0)