Skip to content

Commit f33aafc

Browse files
committed
Add log_file test
1 parent cf00eb5 commit f33aafc

File tree

3 files changed

+39
-4
lines changed

3 files changed

+39
-4
lines changed

elasticapm/conf/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"critical": logging.CRITICAL,
5656
"off": 1000,
5757
}
58-
logging_set_up = False
58+
logfile_set_up = False
5959

6060

6161
class ConfigurationError(ValueError):
@@ -358,9 +358,9 @@ def _log_level_callback(dict_key, old_value, new_value, config_instance):
358358
elasticapm_logger = logging.getLogger("elasticapm")
359359
elasticapm_logger.setLevel(log_levels_map.get(new_value, 100))
360360

361-
global logging_set_up
362-
if not logging_set_up and config_instance.log_file:
363-
logging_set_up = True
361+
global logfile_set_up
362+
if not logfile_set_up and config_instance.log_file:
363+
logfile_set_up = True
364364
filehandler = logging.handlers.RotatingFileHandler(
365365
config_instance.log_file, maxBytes=config_instance.log_file_size, backupCount=1
366366
)

tests/fixtures.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import random
3636
import socket
3737
import sys
38+
import tempfile
3839
import time
3940
import zlib
4041
from collections import defaultdict
@@ -190,6 +191,31 @@ def elasticapm_client(request):
190191
execution_context.set_span(None)
191192

192193

194+
@pytest.fixture()
195+
def elasticapm_client_log_file(request):
196+
original_exceptionhook = sys.excepthook
197+
client_config = getattr(request, "param", {})
198+
client_config.setdefault("service_name", "myapp")
199+
client_config.setdefault("secret_token", "test_key")
200+
client_config.setdefault("central_config", "false")
201+
client_config.setdefault("include_paths", ("*/tests/*",))
202+
client_config.setdefault("span_frames_min_duration", -1)
203+
client_config.setdefault("metrics_interval", "0ms")
204+
client_config.setdefault("cloud_provider", False)
205+
206+
tmp = tempfile.NamedTemporaryFile(delete=False)
207+
tmp.close()
208+
client_config["log_file"] = tmp.name
209+
210+
client = TempStoreClient(**client_config)
211+
yield client
212+
client.close()
213+
# clear any execution context that might linger around
214+
sys.excepthook = original_exceptionhook
215+
execution_context.set_transaction(None)
216+
execution_context.set_span(None)
217+
218+
193219
@pytest.fixture()
194220
def waiting_httpserver(httpserver):
195221
wait_for_http_server(httpserver)

tests/handlers/logging/logging_tests.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,3 +376,12 @@ def test_logging_handler_no_client(recwarn):
376376
def test_log_level_config(elasticapm_client, expected):
377377
logger = logging.getLogger("elasticapm")
378378
assert logger.level == expected
379+
380+
381+
def test_log_file(elasticapm_client_log_file):
382+
logger = logging.getLogger("elasticapm")
383+
found = False
384+
for handler in logger.handlers:
385+
if isinstance(handler, logging.handlers.RotatingFileHandler):
386+
found = True
387+
assert found

0 commit comments

Comments
 (0)