def init_log(log_file=False, file_path=None): if log_file: file_path = os.path.join(_get_logs_dir(), config.log_name) if not file_path else file_path log_file_handler = FileHandler(file_path, format_string=log_format_string, bubble=True, mode='a') log_file_handler.format_string = log_format_string print(f"Session logs can be found here {file_path}") log_file_handler.push_application() log.handlers.append(log_file_handler) log.handlers.append(StreamHandler(sys.stdout, level="DEBUG", format_string=log_format_string))
def __init__(self, filename, logname='Backtest', level=NOTSET): super().__init__(logname, level) path, ext = os.path.splitext(filename) now = datetime.datetime.now() log_filename = path + '_' + now.strftime('%Y-%m-%d_%H%M') + ".log" file_handler = FileHandler(log_filename, level=DEBUG, bubble=True) file_handler.format_string = LOG_ENTRY_FMT self.handlers.append(file_handler) stream_handler = StreamHandler(sys.stdout, level=INFO) stream_handler.format_string = LOG_ENTRY_FMT self.handlers.append(stream_handler)
"""Logger for wxPython.""" from logbook import FileHandler, Logger logger = Logger() file_handler = FileHandler("wx.log", encoding="utf-8", level="DEBUG", delay=True) file_handler.format_string = ( "{record.time:%Y-%m-%d %H:%M:%S.%f%z} [{record.level_name}] " "{record.message}") # Uncomment this to log to wx.log #logger.handlers.append(file_handler)
from logbook import FileHandler, Logger, StreamHandler import sys # Two handlers are created. Notice that other parts of the application # will create handlers as well, these two are general handlers (one stream # handler configured on `sys.stdout`, one file handler set on "bui.log" # although you can change the file name). stream = StreamHandler(sys.stdout, encoding="utf-8", level="INFO", bubble=True) stream.format_string = ( "[{record.level_name}] {record.channel}: {record.message}") file = FileHandler("bui.log", encoding="utf-8", level="INFO", delay=True, bubble=True) file.format_string = ( "{record.time:%Y-%m-%d %H:%M:%S.%f%z} [{record.level_name}] " "{record.channel}: {record.message}") # At this point, neither handler is used, if we create the logger and # write in it, nothing will be logged unless `push_application` # is called on the handlers. logger = Logger("bui") def start_logging(): """Start logging, push the logger.""" stream.push_application() file.push_application()
from os import environ as env from logbook import Logger, FileHandler, DEBUG, INFO, NOTSET, StreamHandler, set_datetime_format from zipline.api import get_datetime import datetime import linecache import os import tracemalloc # log in local time instead of UTC set_datetime_format("local") LOG_ENTRY_FMT = '[{record.time:%Y-%m-%d %H:%M:%S}] {record.level_name}: {record.message}' logfilename = os.path.join(env["HOME"], "log", "sharadar-zipline.log") log = Logger('sharadar_db_bundle') log_file_handler = FileHandler(logfilename, level=DEBUG, bubble=True) log_file_handler.format_string = LOG_ENTRY_FMT log.handlers.append(log_file_handler) log_std_handler = StreamHandler(sys.stdout, level=INFO) log_std_handler.format_string = LOG_ENTRY_FMT log.handlers.append(log_std_handler) def log_top_mem_usage(logger, snapshot, key_type='lineno', limit=10): snapshot = snapshot.filter_traces(( tracemalloc.Filter(False, "<frozen importlib._bootstrap>"), tracemalloc.Filter(False, "<unknown>"), )) top_stats = snapshot.statistics(key_type) logger.info("Top %s lines" % limit) for index, stat in enumerate(top_stats[:limit], 1):