Added custom log function; started tests
continuous-integration/drone the build failed
Details
continuous-integration/drone the build failed
Details
parent
8520b09c4e
commit
8929d743e9
|
@ -1,5 +1,4 @@
|
||||||
pipeline:
|
pipeline:
|
||||||
# TODO add config for all other versions
|
|
||||||
test-3.9:
|
test-3.9:
|
||||||
group: test
|
group: test
|
||||||
image: python:3.9-alpine
|
image: python:3.9-alpine
|
||||||
|
|
|
@ -47,6 +47,34 @@ class Logger:
|
||||||
if not append:
|
if not append:
|
||||||
self.log_file.unlink(missing_ok=True)
|
self.log_file.unlink(missing_ok=True)
|
||||||
|
|
||||||
|
def custom(self, message: str, header: str = None):
|
||||||
|
"""Log a message given a header and a message.
|
||||||
|
|
||||||
|
If a header is provided (aka truthy), the final form of the messsage
|
||||||
|
wil be:
|
||||||
|
|
||||||
|
`[YYYY-MM-DD HH:MM:SS][header] message`
|
||||||
|
|
||||||
|
Otherwise, it's just:
|
||||||
|
|
||||||
|
`[YYYY-MM-DD HH:MM:SS] message`
|
||||||
|
|
||||||
|
Args:
|
||||||
|
message: the message to display
|
||||||
|
header: the header to add to the message
|
||||||
|
"""
|
||||||
|
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
log_message = f"[{timestamp}] {message}\n"
|
||||||
|
|
||||||
|
if header:
|
||||||
|
log_message = f"[{timestamp}][{header}] {message}\n"
|
||||||
|
|
||||||
|
if self.log_file:
|
||||||
|
self.log_file.write_text(log_message)
|
||||||
|
|
||||||
|
if self.stdout:
|
||||||
|
sys.stdout.write(log_message)
|
||||||
|
|
||||||
def log(self, level: int, message: str):
|
def log(self, level: int, message: str):
|
||||||
"""Log a message with a specific level.
|
"""Log a message with a specific level.
|
||||||
|
|
||||||
|
@ -58,14 +86,7 @@ class Logger:
|
||||||
return
|
return
|
||||||
|
|
||||||
level_name = self.LOG_LEVELS[level - 1].upper()
|
level_name = self.LOG_LEVELS[level - 1].upper()
|
||||||
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
self.custom(level_name, message)
|
||||||
log_message = f"[{timestamp}][{level_name}]{message}\n"
|
|
||||||
|
|
||||||
if self.log_file:
|
|
||||||
self.log_file.write_text(log_message)
|
|
||||||
|
|
||||||
if self.stdout:
|
|
||||||
sys.stdout.write(log_message)
|
|
||||||
|
|
||||||
def debug(self, message: str):
|
def debug(self, message: str):
|
||||||
"""Log a debug message."""
|
"""Log a debug message."""
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
"""Tests for the logger module."""
|
||||||
|
from app.logger import Logger
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
|
def test_custom_stdout(capfd):
|
||||||
|
"""Test the custom command."""
|
||||||
|
logger = Logger()
|
||||||
|
|
||||||
|
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
logger.custom("a message", header="cewl")
|
||||||
|
|
||||||
|
out, _ = capfd.readouterr()
|
||||||
|
|
||||||
|
assert out == f"[{timestamp}][cewl] a message\n"
|
||||||
|
|
||||||
|
|
||||||
|
def test_log_stdout(capfd):
|
||||||
|
"""Test the log command with several levels."""
|
||||||
|
|
||||||
|
logger = Logger()
|
||||||
|
|
||||||
|
# TODO
|
Loading…
Reference in New Issue