Source code for draugr.writers.log_writer

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import logging
import sys
from typing import Any

from apppath import ensure_existence
from draugr import PROJECT_APP_PATH
from draugr.writers.writer import Writer

__author__ = "Christian Heider Nielsen"
__doc__ = """
Created on 27/04/2019

@author: cnheider
"""
__all__ = ["LogWriter"]

from pathlib import Path


[docs]class LogWriter(Writer): """description""" def _scalar(self, tag: str, value: float, step: int) -> None: self.logger.info(f"{step} [{tag}] {value}")
[docs] @staticmethod def get_logger( path: Path = Path.cwd() / "0.log", write_to_std_out: bool = False, ) -> logging.Logger: """ :param path: :type path: :param write_to_std_out: :type write_to_std_out: :return: :rtype:""" ensure_existence(path, declare_file=True, overwrite_on_wrong_type=True) handlers = [logging.FileHandler(filename=str(path))] if write_to_std_out: handlers.append(logging.StreamHandler(sys.stdout)) logging.basicConfig(level=logging.INFO, format="%(message)s", handlers=handlers) return logging.getLogger()
[docs] def __init__(self, path, **kwargs): super().__init__(**kwargs) self.log_path = path self.logger: logging.Logger = None
def _open(self) -> Any: self.logger = self.get_logger(self.log_path) return self def _close(self, exc_type=None, exc_val=None, exc_tb=None) -> None: del self.logger def __getattr__(self, item) -> Any: return getattr(self.logger, item) def __call__(self, msg: str) -> None: self.logger.info(msg)
[docs] def text(self, msg: str) -> None: """ :param msg: """ self(msg)
[docs] def log(self, msg: str) -> None: """ :param msg: """ self(msg)
if __name__ == "__main__": with LogWriter(PROJECT_APP_PATH.user_log / "test") as w: w.scalar("What", 4)