예제 #1
0
def blank_line(group, level, frame, ring_bell=False):
    bell = '\x07' if ring_bell else ''
    if frame is DEFAULT:
        frame = sys._getframe(1)
    ConsoleColor.change_color(ConsoleColor.BG_YELLOW | ConsoleColor.DARK_RED)
    _trace.trace(TYPE_LOG,
                 bell + '\r' + '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t',
                 group, level, get_log_zone(), frame)
예제 #2
0
def exception(group, message, *args, exc=None, log_current_callstack=True, frame=DEFAULT, use_format_stack=False, level=LEVEL_EXCEPTION, owner=None):
    if owner:
        message = ('[{owner}] ' + message).format(owner=owner, *args)
    elif args:
        message = message.format(*args)
    if frame is DEFAULT:
        frame = sys._getframe(1)
    if exc is None:
        (exc_type, exc, exc_tb) = sys.exc_info()
        log_current_callstack_prefix = ''
    else:
        exc_type = type(exc)
        exc_tb = exc.__traceback__
        log_current_callstack_prefix = 'Caught and logged:\n'
    if callback_on_error_or_exception is not None:
        callback_on_error_or_exception(message)
    tb = format_exc(exc)
    if use_format_stack:
        dialog_text = ''.join(traceback.format_stack(frame))
    else:
        dialog_text = tb
    if exc is not None:
        try:
            headline = str(exc)
        except:
            headline = '<unprintable exception {}>'.format(type(exc).__name__)
        classname = exc_type.__name__
        if classname in headline:
            headline = ' ({})'.format(headline)
        elif headline:
            headline = ' ({}: {})'.format(classname, headline)
        else:
            headline = ' ({})'.format(classname)
        message += headline
    message_base = message
    tbx = tb.split('\n', 1)
    message += '\n' + tbx[0] + '\n'
    if log_current_callstack:
        message += log_current_callstack_prefix
        message += ''.join(traceback.format_stack(frame))
    message += tbx[1]
    blank_line(group, level, frame, ring_bell=ring_bell_on_exception)
    ConsoleColor.change_color(get_console_color(level, group))
    _trace.trace(TYPE_LOG, message, group, level, get_log_zone(), frame)
    errorLog = '<report><version>2</version><sessionid>%lld</sessionid><type>desync</type>'
    errorLog += '<sku>ea.maxis.sims4.13.pc</sku><createtime>'
    errorLog += datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    errorLog += '</createtime><buildsignature>Local.Unknown.Unknown.0.0.0.0.Debug</buildsignature>'
    errorLog += '<categoryid>%s</categoryid>'
    errorLog += '<desyncid>%lld</desyncid>'
    errorLog += '<systemconfig/><screenshot/>'
    errorLog += '<desyncdata>%s</desyncdata></report>\n'
    _trace.log_exception(errorLog, tbx[1], frame)
    sim_error_dialog(message_base, exc_tb, dialog_text, level=level)
예제 #3
0
def callstack(group,
              message,
              *args,
              level=LEVEL_DEBUG,
              frame=DEFAULT,
              owner=None):
    if frame is DEFAULT:
        frame = sys._getframe(1)
    msg = generate_message_with_callstack(message,
                                          frame=frame,
                                          owner=owner,
                                          *args)
    ConsoleColor.change_color(get_console_color(level, group))
    _trace.trace(TYPE_LOG, msg, group, level, get_log_zone(), frame)
예제 #4
0
def message(message, *args, owner=None):
    if owner:
        message = ('[{owner}] ' + message).format(owner=owner, *args)
    elif args:
        message = message.format(*args)
    frame = sys._getframe(1)
    return _trace.trace(TYPE_TRACE, message, frame=frame)
예제 #5
0
def message(message, *args, owner=None):
    if owner:
        message = ('[{owner}] ' + message).format(owner=owner, *args)
    elif args:
        message = message.format(*args)
    frame = sys._getframe(1)
    return _trace.trace(TYPE_TRACE, message, frame=frame)
예제 #6
0
def log(group, message, *args, level, frame=DEFAULT, owner=None):
    if owner:
        message = ('[{owner}] ' + message).format(owner=owner, *args)
    elif args:
        message = message.format(*args)
    if frame is DEFAULT:
        frame = sys._getframe(1)
    ConsoleColor.change_color(get_console_color(level, group))
    return _trace.trace(TYPE_LOG, message, group, level, get_log_zone(), frame)
예제 #7
0
 def log(self, message, *args, level, frame=DEFAULT, owner=None, trigger_breakpoint=False, **kwargs):
     owner = owner or self.default_owner
     if owner:
         message = ('[{owner}] ' + message).format(owner=owner, *args)
     elif args:
         message = message.format(*args)
     if frame is DEFAULT:
         frame = sys._getframe(2)
     return _trace.trace(TYPE_LOG, message, self.group, level, get_log_zone(), frame)
예제 #8
0
def log(group, message, *args, level, frame=DEFAULT, owner=None):
    if owner:
        message = ('[{owner}] ' + message).format(owner=owner, *args)
    elif args:
        message = message.format(*args)
    if frame is DEFAULT:
        frame = sys._getframe(1)
    ConsoleColor.change_color(get_console_color(level, group))
    return _trace.trace(TYPE_LOG, message, group, level, get_log_zone(), frame)
예제 #9
0
def callstack(group,
              message,
              *args,
              level=LEVEL_DEBUG,
              frame=DEFAULT,
              owner=None):
    if frame is DEFAULT:
        frame = sys._getframe(1)
    msg = generate_message_with_callstack(message,
                                          *args,
                                          frame=frame,
                                          owner=owner,
                                          std_format=level < LEVEL_ERROR)
    _trace.trace(TYPE_LOG,
                 msg,
                 group,
                 level,
                 get_log_zone(),
                 frame,
                 color=get_console_color(level, group))
예제 #10
0
파일: hooks.py 프로젝트: figment/sims4exmod
def message(message, *args, owner=None):
    result = False
    try:
        if owner:
            message = ('[{owner}] ' + message).format(owner=owner, *args)
        elif args:
            message = message.format(*args)
        frame = sys._getframe(1)
        result = _trace.trace(sims4.log.TYPE_TRACE, message, frame=frame)
    except:
        pass
    write(message)
    return result
예제 #11
0
def message(message, *args, owner=None):
    result = False
    try:
        if owner:
            message = ('[{owner}] ' + message).format(owner=owner, *args)
        elif args:
            message = message.format(*args)
        frame = sys._getframe(1)
        result = _trace.trace(sims4.log.TYPE_TRACE, message, frame=frame)
    except:
        pass
    write(message)
    return result
예제 #12
0
파일: hooks.py 프로젝트: figment/sims4exmod
def log(self, message, *args, level, frame=DEFAULT, owner=None, trigger_breakpoint=False, **kwargs):
    result = False
    try:
        owner = owner or self.default_owner
        if owner:
            message = ('[{owner}] ' + message).format(owner=owner, *args)
        elif args:
            message = message.format(*args)
        if frame is DEFAULT:
            frame = sys._getframe(2)
        result = _trace.trace(sims4.log.TYPE_LOG, message, self.group, level, sims4.log.get_log_zone(), frame)
    except:
        pass
    write(message)
    return result
예제 #13
0
파일: hooks.py 프로젝트: figment/sims4exmod
def log(group, message, *args, level, frame=DEFAULT, owner=None):
    result = False
    try:
        if owner:
            message = ('[{owner}] ' + message).format(owner=owner, *args)
        elif args:
            message = message.format(*args)
        if frame is DEFAULT:
            frame = sys._getframe(1)
        ConsoleColor.change_color(sims4.log.get_console_color(level, group))
        result = _trace.trace(sims4.log.TYPE_LOG, message, group, level, sims4.log.get_log_zone(), frame)
    except:
        pass
    write(message)
    return result
예제 #14
0
def log(group, message, *args, level, frame=DEFAULT, owner=None):
    result = False
    try:
        if owner:
            message = ('[{owner}] ' + message).format(owner=owner, *args)
        elif args:
            message = message.format(*args)
        if frame is DEFAULT:
            frame = sys._getframe(1)
        ConsoleColor.change_color(sims4.log.get_console_color(level, group))
        result = _trace.trace(sims4.log.TYPE_LOG, message, group, level,
                              sims4.log.get_log_zone(), frame)
    except:
        pass
    write(message)
    return result
예제 #15
0
 def log(self,
         message,
         *args,
         level,
         frame=DEFAULT,
         owner=None,
         trigger_breakpoint=False,
         **kwargs):
     owner = owner or self.default_owner
     if owner:
         message = ('[{owner}] ' + message).format(owner=owner, *args)
     elif args:
         message = message.format(*args)
     if frame is DEFAULT:
         frame = sys._getframe(2)
     return _trace.trace(TYPE_LOG, message, self.group, level,
                         get_log_zone(), frame)
예제 #16
0
def log(self,
        message,
        *args,
        level,
        frame=DEFAULT,
        owner=None,
        trigger_breakpoint=False,
        **kwargs):
    result = False
    try:
        owner = owner or self.default_owner
        if owner:
            message = ('[{owner}] ' + message).format(owner=owner, *args)
        elif args:
            message = message.format(*args)
        if frame is DEFAULT:
            frame = sys._getframe(2)
        result = _trace.trace(sims4.log.TYPE_LOG, message, self.group, level,
                              sims4.log.get_log_zone(), frame)
    except:
        pass
    write(message)
    return result
예제 #17
0
def exception(group,
              message,
              *args,
              exc=None,
              log_current_callstack=True,
              frame=DEFAULT,
              use_format_stack=False,
              level=LEVEL_EXCEPTION,
              owner=None):
    if owner:
        message = ('[{owner}] ' + message).format(owner=owner, *args)
    elif args:
        message = message.format(*args)
    if frame is DEFAULT:
        frame = sys._getframe(1)
    if exc is None:
        (exc_type, exc, exc_tb) = sys.exc_info()
        log_current_callstack_prefix = ''
    else:
        exc_type = type(exc)
        exc_tb = exc.__traceback__
        log_current_callstack_prefix = 'Caught and logged:\n'
    if callback_on_error_or_exception is not None:
        callback_on_error_or_exception(message)
    tb = format_exc(exc)
    if use_format_stack:
        dialog_text = ''.join(traceback.format_stack(frame))
    else:
        dialog_text = tb
    if exc is not None:
        try:
            headline = str(exc)
        except:
            headline = '<unprintable exception {}>'.format(type(exc).__name__)
        classname = exc_type.__name__
        if classname in headline:
            headline = ' ({})'.format(headline)
        elif headline:
            headline = ' ({}: {})'.format(classname, headline)
        else:
            headline = ' ({})'.format(classname)
        message += headline
    message_base = message
    tbx = tb.split('\n', 1)
    message += '\n' + tbx[0] + '\n'
    if log_current_callstack:
        message += log_current_callstack_prefix
        message += ''.join(traceback.format_stack(frame))
    message += tbx[1]
    blank_line(group, level, frame, ring_bell=ring_bell_on_exception)
    ConsoleColor.change_color(get_console_color(level, group))
    _trace.trace(TYPE_LOG, message, group, level, get_log_zone(), frame)
    errorLog = '<report><version>2</version><sessionid>%lld</sessionid><type>desync</type>'
    errorLog += '<sku>ea.maxis.sims4.13.pc</sku><createtime>'
    errorLog += datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    errorLog += '</createtime><buildsignature>Local.Unknown.Unknown.0.0.0.0.Debug</buildsignature>'
    errorLog += '<categoryid>%s</categoryid>'
    errorLog += '<desyncid>%lld</desyncid>'
    errorLog += '<systemconfig/><screenshot/>'
    errorLog += '<desyncdata>%s</desyncdata></report>\n'
    _trace.log_exception(errorLog, tbx[1], frame)
    sim_error_dialog(message_base, exc_tb, dialog_text, level=level)
예제 #18
0
def blank_line(group, level, frame, ring_bell=False):
    bell = '\x07' if ring_bell else ''
    if frame is DEFAULT:
        frame = sys._getframe(1)
    ConsoleColor.change_color(ConsoleColor.BG_YELLOW | ConsoleColor.DARK_RED)
    _trace.trace(TYPE_LOG, bell + '\r' + '\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t', group, level, get_log_zone(), frame)
예제 #19
0
def exception(group,
              message,
              *args,
              exc=None,
              log_current_callstack=True,
              frame=DEFAULT,
              use_format_stack=False,
              level=LEVEL_EXCEPTION,
              owner=None):
    if owner:
        message = ('[{owner}] ' + message).format(*args, owner=owner)
    elif args:
        message = message.format(*args)
    if frame is DEFAULT:
        frame = sys._getframe(1)
    if exc is None:
        (exc_type, exc, exc_tb) = sys.exc_info()
        log_current_callstack_prefix = ''
    else:
        exc_type = type(exc)
        exc_tb = exc.__traceback__
        log_current_callstack_prefix = 'Caught and logged:\n'
    if callback_on_error_or_exception is not None:
        message = GSI_DUMP_STR + message
    tb = format_exc(exc)
    if use_format_stack:
        dialog_text = ''.join(traceback.format_stack(frame))
    else:
        dialog_text = tb
    if exc is not None:
        try:
            headline = str(exc)
        except:
            headline = '<unprintable exception {}>'.format(type(exc).__name__)
        match = re.match("'NoneType' object has no attribute '(.*)'", headline)
        if match:
            attr = match.group(1)
            offending_line = tb.splitlines()[-2]
            match = re.match(
                '\\s*(?:.* = |if |elif |else |for |while )?(.+)\\.{}\\b.*'.
                format(attr), offending_line)
            if match:
                headline = '"{}" was unexpectedly None'.format(match.group(1))
        classname = exc_type.__name__
        if classname in headline:
            headline = ' ({})'.format(headline)
        elif headline:
            headline = ' ({}: {})'.format(classname, headline)
        else:
            headline = ' ({})'.format(classname)
        message += headline
    message_base = message
    tbx = tb.split('\n', 1)
    tbxx = tbx[1].rsplit('\n', 2)
    message += '\n' + tbx[0] + '\n'
    if log_current_callstack:
        message += log_current_callstack_prefix
        last_tb = exc_tb
        while last_tb.tb_next:
            last_tb = last_tb.tb_next
        message = generate_message_with_callstack(message,
                                                  frame=last_tb.tb_frame)
    else:
        message += tbxx[0]
    message += tbxx[1]
    exc_tb = None
    blank_line(group, level, frame, ring_bell=ring_bell_on_exception)
    _trace.trace(TYPE_LOG,
                 message,
                 group,
                 level,
                 get_log_zone(),
                 frame,
                 color=get_console_color(level, group))
    call_callback_on_error_or_exception(message)
    errorLog = '<report><version>2</version><sessionid>%s</sessionid><type>desync</type>'
    errorLog += '<sku>%s</sku><createtime>'
    errorLog += datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    errorLog += '</createtime><buildsignature>%s</buildsignature>'
    errorLog += '<categoryid>%s</categoryid>'
    errorLog += '<desyncid>%s</desyncid>'
    errorLog += '<systemconfig/><screenshot/>'
    errorLog += '<desyncdata>%s</desyncdata></report>\n'
    _trace.log_exception(errorLog, message, frame)
    sim_error_dialog(message_base, exc_tb, dialog_text, level=level)
예제 #20
0
 def logger(message):
     frame = sys._getframe(1)
     return _trace.trace(_trace.TYPE_LOG, message, 'ApiConfig',
                         level, 0, frame)
예제 #21
0
def callstack(group, message, *args, level=LEVEL_DEBUG, frame=DEFAULT, owner=None):
    if frame is DEFAULT:
        frame = sys._getframe(1)
    msg = generate_message_with_callstack(message, frame=frame, owner=owner, *args)
    ConsoleColor.change_color(get_console_color(level, group))
    _trace.trace(TYPE_LOG, msg, group, level, get_log_zone(), frame)
예제 #22
0
 def logger(message):
     frame = sys._getframe(1)
     return _trace.trace(_trace.TYPE_LOG, message, 'ApiConfig',
                         level, 0, frame)