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:
|
||||
# TODO add config for all other versions
|
||||
test-3.9:
|
||||
group: test
|
||||
image: python:3.9-alpine
|
||||
|
|
|
@ -47,6 +47,34 @@ class Logger:
|
|||
if not append:
|
||||
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):
|
||||
"""Log a message with a specific level.
|
||||
|
||||
|
@ -58,14 +86,7 @@ class Logger:
|
|||
return
|
||||
|
||||
level_name = self.LOG_LEVELS[level - 1].upper()
|
||||
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
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)
|
||||
self.custom(level_name, message)
|
||||
|
||||
def debug(self, message: str):
|
||||
"""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