Skip to content

Commit 652b432

Browse files
committed
Isolate manifester's logger
1 parent 2472b22 commit 652b432

File tree

6 files changed

+57
-23
lines changed

6 files changed

+57
-23
lines changed

manifester/_settings.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"""Module with settings variables/constants."""
2+
import os
3+
from pathlib import Path
4+
5+
settings_file = "manifester_settings.yaml"
6+
MANIFESTER_DIRECTORY = Path()
7+
8+
if "MANIFESTER_DIRECTORY" in os.environ:
9+
envar_location = Path(os.environ["MANIFESTER_DIRECTORY"])
10+
if envar_location.is_dir():
11+
MANIFESTER_DIRECTORY = envar_location
12+
13+
settings_path = MANIFESTER_DIRECTORY.joinpath(settings_file)

manifester/commands.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
from pathlib import Path
44

55
import click
6-
from logzero import logger
76

87
from manifester import Manifester, helpers
8+
from manifester.logger import _logger as logger
99
from manifester.settings import settings
1010

1111

manifester/helpers.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,12 @@
99
import sys
1010
import time
1111

12-
from logzero import logger
1312
from requests import HTTPError
1413
import yaml
1514

16-
from manifester.logger import setup_logzero
15+
from manifester.logger import _logger as logger
1716
from manifester.settings import settings
1817

19-
setup_logzero(level="info")
20-
21-
2218
RESULTS_LIMIT = 10000
2319

2420

manifester/logger.py

+40-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,28 @@
11
"""Defines manifester's internal logging."""
2+
23
import logging
34
from pathlib import Path
45

6+
from dynaconf import Dynaconf
57
import logzero
68

9+
from manifester._settings import settings_path
10+
11+
# Initialize temporary settings without running the Vault loader
12+
temp_settings = Dynaconf(
13+
settings_file=str(settings_path.absolute()),
14+
ENVVAR_PREFIX_FOR_DYNACONF="MANIFESTER",
15+
load_dotenv=False,
16+
)
17+
718

8-
def setup_logzero(level="info", path="logs/manifester.log", silent=True):
19+
def _setup_logzero(
20+
level=temp_settings.get("log_level", "info"),
21+
path="logs/manifester.log",
22+
name=None,
23+
formatter=None,
24+
silent=True,
25+
):
926
"""Call logzero setup with the given settings."""
1027
Path(path).parent.mkdir(parents=True, exist_ok=True)
1128
log_fmt = "%(color)s[%(levelname)s %(asctime)s]%(end_color)s %(message)s"
@@ -15,10 +32,29 @@ def setup_logzero(level="info", path="logs/manifester.log", silent=True):
1532
log_level = getattr(logging, level.upper(), logging.INFO)
1633
# formatter for terminal
1734
formatter = logzero.LogFormatter(fmt=debug_fmt if log_level is logging.DEBUG else log_fmt)
18-
logzero.setup_logger(formatter=formatter, disableStderrLogger=silent)
19-
logzero.loglevel(log_level)
35+
if not name:
36+
name = "manifester"
2037
# formatter for file
2138
formatter = logzero.LogFormatter(
2239
fmt=debug_fmt if log_level is logging.DEBUG else log_fmt, color=False
2340
)
24-
logzero.logfile(path, loglevel=log_level, maxBytes=1e9, backupCount=3, formatter=formatter)
41+
logger = logzero.setup_logger(
42+
name=name,
43+
formatter=formatter,
44+
level=log_level,
45+
logfile=path,
46+
maxBytes=1e9,
47+
backupCount=3,
48+
disableStderrLogger=silent,
49+
)
50+
return logger
51+
52+
53+
_logger = _setup_logzero()
54+
# delete temporary settings after initializing the logger
55+
del temp_settings
56+
57+
58+
def setup_logzero(level, path, name=None, silent=True):
59+
"""Call logzero setup with the given settings."""
60+
_logger = _setup_logzero(level, path, name, silent)

manifester/manifester.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import string
1010

1111
from dynaconf.utils.boxing import DynaBox
12-
from logzero import logger
1312
from requests.exceptions import Timeout
1413

1514
from manifester.helpers import (
@@ -18,7 +17,7 @@
1817
simple_retry,
1918
update_inventory,
2019
)
21-
from manifester.logger import setup_logzero
20+
from manifester.logger import _logger as logger
2221
from manifester.settings import settings
2322

2423

@@ -33,7 +32,6 @@ def __init__(
3332
proxies=None,
3433
**kwargs,
3534
):
36-
setup_logzero(level=settings.get("log_level", "info"))
3735
if minimal_init:
3836
self.offline_token = settings.get("offline_token")
3937
self.token_request_url = settings.get("url").get("token_request")

manifester/settings.py

+1-10
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,9 @@
11
"""Retrieves settings from configuration file and runs Dynaconf validators."""
2-
import os
3-
from pathlib import Path
42

53
from dynaconf import Dynaconf, Validator
64

7-
settings_file = "manifester_settings.yaml"
8-
MANIFESTER_DIRECTORY = Path()
5+
from manifester._settings import settings_path
96

10-
if "MANIFESTER_DIRECTORY" in os.environ:
11-
envar_location = Path(os.environ["MANIFESTER_DIRECTORY"])
12-
if envar_location.is_dir():
13-
MANIFESTER_DIRECTORY = envar_location
14-
15-
settings_path = MANIFESTER_DIRECTORY.joinpath("manifester_settings.yaml")
167
validators = [
178
Validator("offline_token", must_exist=True),
189
Validator("simple_content_access", default="enabled"),

0 commit comments

Comments
 (0)