log.py
59 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
|
r1047 | """ | ||
|
r943 | 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. | ||||
""" | ||||
|
r1047 | import os | ||
import sys | ||||
|
r943 | import click | ||
def warning(message): | ||||
click.echo(click.style('[WARNING] - ' + message, fg='yellow')) | ||||
def error(message): | ||||
|
r1042 | click.echo(click.style('[ERROR] - ' + message, fg='red', bg='black')) | ||
|
r943 | |||
def success(message): | ||||
|
r944 | click.echo(click.style(message, fg='green')) | ||
|
r943 | |||
|
r1042 | def log(message, topic='LOG'): | ||
click.echo('[{}] - {}'.format(topic, message)) | ||||
|
r943 | |||
def makelogger(topic, bg='reset', fg='reset'): | ||||
def func(message): | ||||
click.echo(click.style('[{}] - '.format(topic.upper()) + message, | ||||
bg=bg, fg=fg)) | ||||
return func | ||||
|
r1047 | |||
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 | ||||