diff --git a/.vscode/launch.json b/.vscode/launch.json index 69bdd45..46f4007 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,7 +14,8 @@ "request": "launch", "cwd": "${workspaceFolder}", "console": "integratedTerminal", - "program": "${workspaceFolder}\\.venv\\Scripts\\logwatcher.exe" + "module": "logwatcher.app", + //"program": "${workspaceFolder}\\.venv\\Scripts\\logwatcher.exe" } ] } \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 454dcc0..df79276 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ dependencies = [ ] [project.scripts] -logwatcher = "logwatcher.main:main" +logwatcher = "logwatcher.app:app" [project.optional-dependencies] dev = [ diff --git a/src/logwatcher/__init__.py b/src/logwatcher/__init__.py index 5a12a32..1898185 100644 --- a/src/logwatcher/__init__.py +++ b/src/logwatcher/__init__.py @@ -1,2 +1,3 @@ -def main() -> None: - print("Hello from logwatcher!") +from logwatcher.logging import setup_logging + +logger = setup_logging() diff --git a/src/logwatcher/__main__.py b/src/logwatcher/__main__.py new file mode 100644 index 0000000..74c9815 --- /dev/null +++ b/src/logwatcher/__main__.py @@ -0,0 +1,5 @@ +from logwatcher.app import app + + +def main(): + app() \ No newline at end of file diff --git a/src/logwatcher/app.py b/src/logwatcher/app.py new file mode 100644 index 0000000..534495e --- /dev/null +++ b/src/logwatcher/app.py @@ -0,0 +1,11 @@ +from logwatcher import logger +from logwatcher.parser import parser + + +def app(): + logger.info("logwatcher starts its work.") + parser() + logger.info('logwatcher has finished its task.') + +if __name__ == "__main__": + app() \ No newline at end of file diff --git a/src/logwatcher/config.py b/src/logwatcher/config.py new file mode 100644 index 0000000..694ce31 --- /dev/null +++ b/src/logwatcher/config.py @@ -0,0 +1,9 @@ +from pathlib import Path + +# output path +OUTPUT_PATH = Path("output") +RESULT_PATH = OUTPUT_PATH / "results" +LOGGING_PATH = OUTPUT_PATH / "logs" + +# fixture path +FIXTURE_PATH = Path.cwd() / "fixtures" \ No newline at end of file diff --git a/src/logwatcher/logging.py b/src/logwatcher/logging.py new file mode 100644 index 0000000..47050c5 --- /dev/null +++ b/src/logwatcher/logging.py @@ -0,0 +1,42 @@ +import logging +from pathlib import Path + + +def setup_formatter( + format: str = '[%(asctime)s] - %(levelname)s: %(message)s', + datefmt: str = '%d/%m/%Y %H:%M:%S' + ) -> logging.Formatter: + return logging.Formatter(fmt=format, datefmt=datefmt) + + +def setup_file_handler(formatter: logging.Formatter, level: int , filename: Path | None = None) -> logging.Handler: + handler: logging.Handler + if filename: + handler = logging.FileHandler(filename=filename, encoding='utf-8') + else: + handler = logging.StreamHandler() + handler.setLevel(level) + handler.setFormatter(formatter) + return handler + + +def setup_logging() -> logging.Logger: + """ + Create a new instance of Logger named 'logger' customized for the logwatcher package. + The format display in order the time, the level of log and the log message + The logs are only redirect in the standard output. + """ + logger = logging.getLogger("logwatcher_log") + + formatter = setup_formatter() + + standard_output = setup_file_handler(formatter, logging.ERROR) + + file_path = Path('output/logs/logwatcher.log') + file_output = setup_file_handler(formatter, logging.DEBUG, file_path) + + + logger.addHandler(standard_output) + logger.addHandler(file_output) + + return logger diff --git a/src/logwatcher/main.py b/src/logwatcher/main.py deleted file mode 100644 index 26e5be5..0000000 --- a/src/logwatcher/main.py +++ /dev/null @@ -1,5 +0,0 @@ -from logwatcher.parser import parser - - -def main(): - parser()