Main module¶
LogParser¶
-
class
log2seq.
LogParser
(header_parsers, statement_parser, ignore_failure=False)¶ Log parser object.
LogParser in log2seq consists of two different parsers:
HeaderParser
andStatementParser
.Parsed results are returned in one dict object. It consists of following parsed information.
- Header information (
value_name
as key) - Statement part in string format (“message” as key)
- Segmented words in statement part (“words” as key)
- Separator symbols in ststement part (“symbols” as key)
Example
>>> mes = "Jan 1 12:34:56 host-device1 system[12345]: host 2001:0db8:1234::1 (interface:eth0) disconnected" >>> import log2seq >>> parser = log2seq.init_parser() # get default LogParser >>> parsed_line = parser.process_line(mes) >>> parsed_line["timestamp"] # timestamp parsed by HeaderParser datetime.datetime(2020, 1, 1, 12, 34, 56) >>> parsed_line["host"] # Hostname item in HeaderParser 'host-device1' >>> parsed_line["message"] # Statement part parsed by HeaderParser 'system[12345]: host 2001:0db8:1234::1 (interface:eth0) disconnected' >>> parsed_line["words"] # Segmented words parsed by StatementParser ['system', '12345', 'host', '2001:0db8:1234::1', 'interface', 'eth0', 'disconnected'] >>> parsed_line["symbols"] # Separator symbols parsed by StatementParser ['', '[', ']: ', ' ', ' (', ':', ') ', '']
You can specify multiple
HeaderParser
as input. If so,LogParser
try to parse a log message with them in order, and the first matched rule is used for the message.Parameters: - header_parsers (
HeaderParser
or list of it) – one or multiple HeaderParser instance to use. - statement_parser (
StatementParser
) – one StatementParser instance to use. - ignore_failure (bool, optional) – If true, ignore non-matching lines with given header parsers.
-
process_header
(line, verbose=False)¶ Parse header part in a log message.
This function uses all given HeaderParser rules. If all HeaderParser fails to match the input log message, it raises a
LogParseFailure
exception.Parameters: - line (str) – A log message.
- verbose (bool, optional) – Show intermediate progress of applying header rules.
Returns: parsed header data.
Return type: dict
-
process_line
(line, verbose=False)¶ Parse a log message (i.e., a line).
If all HeaderParser fails to match the input log message, it raises a LogParserFailure exception.
Parameters: - line (str) – A log message. Line feed code will be removed.
- verbose (bool, optional) – Show intermediate progress of applying rules.
Returns: parsed data.
Return type: dict
-
process_statement
(statement, verbose=False)¶ Parse a log statement.
Parameters: - statement (str) – Statement part in a log message.
- verbose (bool, optional) – Show intermediate progress of applying rules.
Returns: List of two components: words and symbols. See
statement.StatementParser.process_line()
.Return type: tuple
- Header information (
-
log2seq.
init_parser
(header_parsers=None, statement_parser=None)¶ Generate
LogParser
object.If no arguments are given, this function generates LogParser with default configurations.
Parameters: - header_parsers (
HeaderParser
or list of it, optional) – one or multiple HeaderParser instance to use. If not given, usepreset.default_header_parsers()
. - statement_parser (
StatementParser
) – one StatementParser instance to use. If not given, usepreset.default_statement_parser()
.
- header_parsers (
Exceptions¶
-
class
log2seq.
ParserDefinitionError
¶ ParserDefinitionError is raised when the given rules are inappropriate (e.g., having syntax errors).
-
class
log2seq.
LogParseFailure
¶ LogParserFailure is raised when the input log message not matched with all given HeaderParser rules.
If you want to pass such mismatching log messages, use try-except with this exception.