def exception(self, message):
        """Log given message plus traceback w/ level 'ERROR'.

        Parameters
        ==========

        message (string)
            text to be logged; can have multiple lines.
        """

        ### create a header with a friendly representation
        ### of the current time

        header = HEADER_FORMATTER("ERROR", get_friendly_time())

        ### obtain full message by formatting
        ### header and message
        full_message = MULTILINE_FORMATTER(header, message)

        ### obtain the text of the exception's traceback
        ### and increment the full message with it

        traceback_text = format_exc()

        full_message += ONE_LINE + traceback_text

        ### finally, extend the lines of the log with
        ### the ones we put together and limit the number
        ### of lines to the value in the 'max_lines'
        ### attribute

        self.contents += full_message + TWO_LINES

        self.contents = "\n".join(self.contents.splitlines()[-self.max_lines :])
Log given message plus traceback w/ level 'ERROR'.

        Parameters
        ==========

        message (string)
            text to be logged; can have multiple lines.
        
nodezator/our3rdlibs/userlogger.py