|
|
"""
|
|
|
SCHAINPY - LOG
|
|
|
Simple helper for log standarization
|
|
|
Usage:
|
|
|
from schainpy.utils import log
|
|
|
log.error('A kitten died beacuse of you')
|
|
|
log.warning('You are doing it wrong but what the heck, I'll allow it)
|
|
|
log.succes('YOU ROCK!')
|
|
|
To create your own logger inside your class do it like this:
|
|
|
from schainpy.utils import log
|
|
|
awesomeLogger = log.makelogger("never gonna", bg="red", fg="white")
|
|
|
awesomeLogger('give you up')
|
|
|
which will look like this:
|
|
|
[NEVER GONNA] - give you up
|
|
|
with color red as background and white as foreground.
|
|
|
"""
|
|
|
import os
|
|
|
import sys
|
|
|
import click
|
|
|
|
|
|
def warning(message):
|
|
|
click.echo(click.style('[WARNING] - ' + message, fg='yellow'))
|
|
|
|
|
|
|
|
|
def error(message):
|
|
|
click.echo(click.style('[ERROR] - ' + message, fg='red', bg='black'))
|
|
|
|
|
|
|
|
|
def success(message):
|
|
|
click.echo(click.style(message, fg='green'))
|
|
|
|
|
|
|
|
|
def log(message, topic='LOG'):
|
|
|
click.echo('[{}] - {}'.format(topic, message))
|
|
|
|
|
|
def makelogger(topic, bg='reset', fg='reset'):
|
|
|
def func(message):
|
|
|
click.echo(click.style('[{}] - '.format(topic.upper()) + message,
|
|
|
bg=bg, fg=fg))
|
|
|
return func
|
|
|
|
|
|
class LoggerForFile():
|
|
|
def __init__(self, filename):
|
|
|
self.old_stdout=sys.stdout
|
|
|
cwd = os.getcwd()
|
|
|
self.log_file = open(os.path.join(cwd, filename), 'w+')
|
|
|
def write(self, text):
|
|
|
text = text.rstrip()
|
|
|
if not text:
|
|
|
return
|
|
|
self.log_file.write(text + '\n')
|
|
|
self.old_stdout.write(text + '\n')
|
|
|
def flush(self):
|
|
|
self.old_stdout.flush()
|
|
|
|
|
|
def logToFile(filename='log.log'):
|
|
|
logger = LoggerForFile(filename)
|
|
|
sys.stdout = logger
|
|
|
|
|
|
|