Note: If you have problems while using SingleLog and other libraries, you can try DefalutLogger
instead of SingleLogger
.
You can use stage
method to display the log step by step in the same line.
And don't need to worry about the default print function will print the log in the same line.
Note that the stage effect only works on LogLevel.INFO.
import time
from SingleLog import Logger
logger = Logger('rocket')
logger.info('Init rocket launch proces')
time.sleep(1.5)
logger.stage('complete!')
logger.info('Start the countdown')
time.sleep(1)
logger.stage('3')
time.sleep(1)
logger.stage('2')
time.sleep(1)
logger.stage('1')
time.sleep(1)
logger.stage('fire!')
logger.info('Launch complete')
SingleLog Supports some common types to display in format. Such as list, dict and tuple etc.
from SingleLog import Logger
logger = Logger('demo')
logger.info('show int list', [101, 102, 103])
logger.info('show tuple', ('12', '14', '16'))
logger.info('data', {'1': 'value1', '2': 'value2'})
pip install SingleLog -U
from SingleLog import Logger
logger = Logger('demo')
logger.info('hello world')
You can set the LogLevel of the logger.
info
: Confirmation that things are working as expected.debug
: Detailed information, usually of interest only when diagnosing problems.trace
: Detailed information on the flow through the system.
from SingleLog import Logger
from SingleLog import LogLevel
logger = Logger('demo', log_level=LogLevel.DEBUG)
logger.info('you can see it, when log_level is set to INFO, DEBUG and TRACE')
logger.debug('you can see it, when log_level is set to DEBUG and TRACE')
logger.trace('you can see it, when log_level is set to TRACE')
You can use logger handler to handle the log.
from SingleLog import Logger
def log_to_file(msg):
with open('single_log.txt', 'a', encoding='utf8') as f:
f.write(f'{msg}\n')
logger = Logger('Handle', handler=log_to_file)
logger.info('1')
logger.info(2)
logger.info('show value', 456)
Handler also supports list.
from SingleLog import Logger
from SingleLog import LogLevel
def log_to_file(msg):
with open('single_log.txt', 'a', encoding='utf8') as f:
f.write(f'{msg}\n')
def log_to_file2(msg):
with open('single_log_2.txt', 'a', encoding='utf8') as f:
f.write(f'{msg}\n')
logger = Logger('INFO', LogLevel.INFO, handler=[log_to_file, log_to_file2])
logger.info('1')
logger.info(2)
logger.info('show value', 456)
In this demo, the log message will display on the screen.
Also you can find it in single_log.txt and single_log_2.txt.
You can use logger to display the log in different ways.
You can skip repeated message.
The following logger will display only one message.
from SingleLog import Logger
logger = Logger('demo', skip_repeat=True)
logger.info('hello world')
logger.info('hello world')
logger.info('hello world')
You can change stage separator to display the log.
import time
from SingleLog import Logger
logger = Logger('demo', stage_sep='-')
logger.info('Init rocket launch proces')
time.sleep(1.5)
logger.stage('complete!')
logger.info('Start the countdown')
time.sleep(1)
logger.stage('3')
time.sleep(1)
logger.stage('2')
time.sleep(1)
logger.stage('1')
You can change stage color.
You can find the more color information from Colorama.
from colorama import Fore
from SingleLog import Logger
logger = Logger('demo', stage_color_list = [Fore.GREEN, Fore.YELLOW])
logger.info('start')
for i in range(10):
logger.stage(i)
You can change timestamp format.
from SingleLog import Logger
logger = Logger('demo')
logger.info('default timestamp')
logger = Logger('demo', timestamp='%Y-%m-%d %H:%M:%S')
logger.info('custom timestamp')
You can use keyword of success and failure to display the log.
The keywords in key_word_success
, will be displayed in green color.
The keywords in key_word_failure
, will be displayed in red color.
from SingleLog import Logger
logger = Logger('demo', key_word_success=['custom_success'], key_word_fails=['custom_fail'])
logger.info('do something')
logger.stage('custom_success')
logger.stage('custom_fail')
MIT License