Source code for insights.parsers.jboss_domain_log

"""
JbossDomainServerLog - file ``$JBOSS_SERVER_LOG_DIR/server.log*``
=================================================================

Parser for the JBoss Domain Server Log File.
"""

from .. import LogFileOutput, parser
import re
from datetime import time
from insights.specs import Specs


[docs] class JbossDomainLog(LogFileOutput): """ Read JBoss domain log file. """ time_format = '%H:%M:%S' _line_re = re.compile(r'^(?P<timestamp>\d+:\d+:\d+)(,\d+)(?P<messages>.*)$')
[docs] def get_after(self, timestamp, s=None): """ Find all the (available) logs that are after the given time stamp. If `s` is not supplied, then all lines are used. Otherwise, only the lines contain the `s` are used. `s` can be either a single string or a strings list. For list, all keywords in the list must be found in the line. .. note:: The time stamp is time type instead of usual datetime type. If a time stamp is not found on the line between square brackets, then it is treated as a continuation of the previous line and is only included if the previous line's timestamp is greater than the timestamp given. Because continuation lines are only included if a previous line has matched, this means that searching in logs that do not have a time stamp produces no lines. Parameters: timestamp(time): log lines after this time are returned. s(str or list): one or more strings to search for. If not supplied, all available lines are searched. Yields: Log lines with time stamps after the given time. Raises: TypeError: The ``timestamp`` should be in `time` type, otherwise a `TypeError` will be raised. """ if not isinstance(timestamp, time): raise TypeError( "get_after needs a time type timestamp, but get '{c}'".format( c=timestamp) ) including_lines = False search_by_expression = self._valid_search(s) for line in self.lines: # If `s` is not None, keywords must be found in the line if s and not search_by_expression(line): continue # Otherwise, search all lines match = self._line_re.search(line) if match and match.group('timestamp'): # Get logtimestamp and compare to given timestamp l_hh, l_mm, l_ss = match.group('timestamp').split(":") logstamp = time(int(l_hh), int(l_mm), int(l_ss)) if logstamp >= timestamp: including_lines = True yield self._parse_line(line) else: including_lines = False else: # If we're including lines, add this continuation line if including_lines: yield self._parse_line(line)
[docs] @parser(Specs.jboss_domain_server_log) class JbossDomainServerLog(JbossDomainLog): """ Read JBoss domain server log file. Sample input:: 16:22:57,476 INFO [org.xnio] (MSC service thread 1-12) XNIO Version 3.0.14.GA-redhat-1 16:22:57,480 INFO [org.xnio.nio] (MSC service thread 1-12) XNIO NIO Implementation Version 3.0.14.GA-redhat-1 16:22:57,495 INFO [org.jboss.remoting] (MSC service thread 1-12) JBoss Remoting version 3.3.5.Final-redhat-1 16:23:03,881 INFO [org.jboss.as.controller.management-deprecated] (ServerService Thread Pool -- 23) JBAS014627: Attribute 'enabled' in the resource at address '/subsystem=datasources/data-source=ExampleDS' is deprecated, and may be removed in future version. See the attribute description in the output of the read-resource-description operation to learn more about the deprecation. 16:23:03,958 INFO [org.jboss.as.security] (ServerService Thread Pool -- 37) JBAS013371: Activating Security Subsystem Examples: >>> type(log) <class 'insights.parsers.jboss_domain_log.JbossDomainServerLog'> >>> log.file_path '/home/test/jboss/machine2/domain/servers/server-one/log/server.log' >>> log.file_name 'server.log' >>> error_msgs = log.get('3.0.14.GA-redhat-1') >>> error_msgs[0]['raw_message'] '16:22:57,476 INFO [org.xnio] (MSC service thread 1-12) XNIO Version 3.0.14.GA-redhat-1' >>> 'Activating Security Subsystem' in log True >>> from datetime import time >>> list(log.get_after(time(16, 23, 3)))[1]['raw_message'] '16:23:03,958 INFO [org.jboss.as.security] (ServerService Thread Pool -- 37) JBAS013371: Activating Security Subsystem' """ pass
[docs] @parser(Specs.jboss_standalone_server_log) class JbossStandaloneServerLog(JbossDomainLog): """ Read JBoss standalone server log file. Sample input:: 2018-07-17 10:58:44,606 INFO [org.jboss.modules] (main) JBoss Modules version 1.6.0.Final-redhat-1 2018-07-17 10:58:44,911 INFO [org.jboss.msc] (main) JBoss MSC version 1.2.7.SP1-redhat-1 2018-07-17 10:58:45,032 INFO [org.jboss.as] (MSC service thread 1-7) WFLYSRV0049: JBoss EAP 7.1.0.GA (WildFly Core 3.0.10.Final-redhat-1) starting 2018-07-17 10:58:45,033 DEBUG [org.jboss.as.config] (MSC service thread 1-7) Configured system properties: [Standalone] = awt.toolkit = sun.awt.X11.XToolkit file.encoding = UTF-8 file.encoding.pkg = sun.io file.separator = / java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment java.awt.headless = true java.awt.printerjob = sun.print.PSPrinterJob java.class.path = /opt/jboss-eap-7.1/jboss-modules.jar java.class.version = 52.0 java.endorsed.dirs = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/endorsed java.ext.dirs = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/ext:/usr/java/packages/lib/ext java.home = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre java.io.tmpdir = /tmp java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib java.net.preferIPv4Stack = true java.runtime.name = OpenJDK Runtime Environment java.runtime.version = 1.8.0_111-b16 java.specification.name = Java Platform API Specification java.specification.vendor = Oracle Corporation java.specification.version = 1.8 java.util.logging.manager = org.jboss.logmanager.LogManager java.vendor = Oracle Corporation java.vendor.url = http://java.oracle.com/ java.vendor.url.bug = http://bugreport.sun.com/bugreport/ java.version = 1.8.0_111 java.vm.info = mixed mode java.vm.name = OpenJDK 64-Bit Server VM java.vm.specification.name = Java Virtual Machine Specification java.vm.specification.vendor = Oracle Corporation java.vm.specification.version = 1.8 java.vm.vendor = Oracle Corporation java.vm.version = 25.111-b16 javax.management.builder.initial = org.jboss.as.jmx.PluggableMBeanServerBuilder javax.xml.datatype.DatatypeFactory = __redirected.__DatatypeFactory javax.xml.parsers.DocumentBuilderFactory = __redirected.__DocumentBuilderFactory javax.xml.parsers.SAXParserFactory = __redirected.__SAXParserFactory javax.xml.stream.XMLEventFactory = __redirected.__XMLEventFactory javax.xml.stream.XMLInputFactory = __redirected.__XMLInputFactory javax.xml.stream.XMLOutputFactory = __redirected.__XMLOutputFactory javax.xml.transform.TransformerFactory = __redirected.__TransformerFactory javax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema = __redirected.__SchemaFactory javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom = __redirected.__XPathFactory jboss.home.dir = /opt/jboss-eap-7.1 jboss.host.name = mylinux jboss.modules.dir = /opt/jboss-eap-7.1/modules jboss.modules.system.pkgs = org.jboss.byteman jboss.node.name = mylinux jboss.qualified.host.name = mylinux jboss.server.base.dir = /opt/jboss-eap-7.1/standalone jboss.server.config.dir = /opt/jboss-eap-7.1/standalone/configuration jboss.server.data.dir = /opt/jboss-eap-7.1/standalone/data jboss.server.deploy.dir = /opt/jboss-eap-7.1/standalone/data/content jboss.server.log.dir = /opt/jboss-eap-7.1/standalone/log jboss.server.name = mylinux jboss.server.persist.config = true jboss.server.temp.dir = /opt/jboss-eap-7.1/standalone/tmp line.separator = logging.configuration = file:/opt/jboss-eap-7.1/standalone/configuration/logging.properties module.path = /opt/jboss-eap-7.1/modules org.jboss.boot.log.file = /opt/jboss-eap-7.1/standalone/log/server.log org.jboss.resolver.warning = true org.xml.sax.driver = __redirected.__XMLReaderFactory os.arch = amd64 os.name = Linux os.version = 4.8.13-100.fc23.x86_64 path.separator = : sun.arch.data.model = 64 sun.boot.class.path = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/resources.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/jce.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/jfr.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/classes sun.boot.library.path = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b16.fc23.x86_64/jre/lib/amd64 sun.cpu.endian = little sun.cpu.isalist = sun.desktop = gnome sun.io.unicode.encoding = UnicodeLittle sun.java.command = /opt/jboss-eap-7.1/jboss-modules.jar -mp /opt/jboss-eap-7.1/modules org.jboss.as.standalone -Djboss.home.dir=/opt/jboss-eap-7.1 -Djboss.server.base.dir=/opt/jboss-eap-7.1/standalone --server-config=standalone-ha.xml sun.java.launcher = SUN_STANDARD Examples: >>> type(standalone_log) <class 'insights.parsers.jboss_domain_log.JbossStandaloneServerLog'> >>> standalone_log.file_path '/JBOSS_HOME/standalone/log/server.log' >>> standalone_log.file_name 'server.log' >>> len(standalone_log.get("sun.java.command =")) 1 """ pass