cc: expand "~" in log file configuration

This commit is contained in:
Mike Salvatore 2021-02-10 13:39:12 -05:00
parent 8b3703816d
commit 74e0dfddc5
3 changed files with 74 additions and 0 deletions

View File

@ -1,6 +1,7 @@
import json import json
import logging.config import logging.config
import os import os
from typing import Dict
from monkey_island.cc.consts import DEFAULT_LOGGING_CONFIG_PATH from monkey_island.cc.consts import DEFAULT_LOGGING_CONFIG_PATH
@ -28,6 +29,17 @@ def json_setup_logging(
if os.path.exists(path): if os.path.exists(path):
with open(path, "rt") as f: with open(path, "rt") as f:
config = json.load(f) config = json.load(f)
_expanduser_log_file_paths(config)
logging.config.dictConfig(config) logging.config.dictConfig(config)
else: else:
logging.basicConfig(level=default_level) logging.basicConfig(level=default_level)
def _expanduser_log_file_paths(config: Dict):
handlers = config.get("handlers", {})
for handler_settings in handlers.values():
if "filename" in handler_settings:
handler_settings["filename"] = os.path.expanduser(
handler_settings["filename"]
)

View File

@ -0,0 +1,29 @@
import logging
import os
from monkey_island.cc.consts import MONKEY_ISLAND_ABS_PATH
from monkey_island.cc.island_logger import json_setup_logging
TEST_LOGGING_CONFIG_PATH = os.path.join(MONKEY_ISLAND_ABS_PATH, "cc", "testing",
"logger_config.json")
def set_home_env(monkeypatch, tmpdir):
monkeypatch.setenv("HOME", tmpdir)
def test_expanduser_filename(monkeypatch, tmpdir):
INFO_LOG = os.path.join(tmpdir, "info.log")
TEST_STRING = "Hello, Monkey!"
set_home_env(monkeypatch, tmpdir)
json_setup_logging(TEST_LOGGING_CONFIG_PATH)
logger = logging.getLogger("TestLogger")
logger.info(TEST_STRING)
assert os.path.isfile(INFO_LOG)
with open(INFO_LOG, "r") as f:
line = f.readline()
assert TEST_STRING in line

View File

@ -0,0 +1,33 @@
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"simple": {
"format": "%(asctime)s - %(filename)s:%(lineno)s - %(funcName)10s() - %(levelname)s - %(message)s"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "DEBUG",
"formatter": "simple",
"stream": "ext://sys.stdout"
},
"info_file_handler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "INFO",
"formatter": "simple",
"filename": "~/info.log",
"maxBytes": 10485760,
"backupCount": 20,
"encoding": "utf8"
}
},
"root": {
"level": "DEBUG",
"handlers": [
"console",
"info_file_handler"
]
}
}