catalina_log - Log files for Tomcat

Note

The tomcat log files are gotten from the directory specified in the java commands.

class insights.parsers.catalina_log.CatalinaOut(context)[source]

Bases: LogFileOutput

This parser reads all catalina.out files in the /var/log/tomcat* directories.

Note

Please refer to its super-class insights.core.LogFileOutput

Note that the standard format of Catalina log lines spreads the information over two lines:

Nov 10, 2015 8:52:38 AM org.apache.jk.common.MsgAjp processHeader
SEVERE: BAD packet signature 18245
Nov 10, 2015 8:52:38 AM org.apache.jk.common.ChannelSocket processConnection
SEVERE: Error, processing connection
SEVERE: BAD packet signature 18245
Nov 10, 2015 8:52:38 AM org.apache.jk.common.ChannelSocket processConnection
SEVERE: Error, processing connection
Nov 10, 2015 4:55:48 PM org.apache.coyote.http11.Http11Protocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080

However, this parser only recognises single lines.

When using this parser, consider using a filter or a scan method, e.g.:

CatalinaOut.filters.append('BAD packet signature')
CatalinaOut.keep_scan('bad_signatures', 'BAD packet signature')

Example

>>> type(out)
<class 'insights.parsers.catalina_log.CatalinaOut'>
>>> out.file_path
'/var/log/tomcat/catalina.out'
>>> out.file_name
'catalina.out'
>>> len(out.get('SEVERE'))
4
>>> 'Http11Protocol pause' in out
True
>>> out.lines[0]
'Nov 10, 2015 8:52:38 AM org.apache.jk.common.MsgAjp processHeader'
>>> from datetime import datetime
>>> list(out.get_after(datetime(2015, 11, 10, 12, 00, 00)))[0]['raw_message']
'Nov 10, 2015 4:55:48 PM org.apache.coyote.http11.Http11Protocol pause'
time_format = '%b %d, %Y %I:%M:%S %p'

The timestamp format assumed for the log files. A subclass can override this for files that have a different timestamp format. This can be:

  • A string in strptime() format.

  • A list of strptime() strings.

  • A dictionary with each item’s value being a strptime() string. This allows the item keys to provide some form of documentation.

  • A None value when there is no timestamp info in the log file

class insights.parsers.catalina_log.CatalinaServerLog(context)[source]

Bases: LogFileOutput

Read the tomcat server log file.

Note that the standard format of Catalina log lines spreads the information over two lines:

INFO: Command line argument: -Djava.io.tmpdir=/var/cache/tomcat/temp
Nov 28, 2017 2:11:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties
Nov 28, 2017 2:11:20 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
Nov 28, 2017 2:11:20 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Nov 28, 2017 2:11:22 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-18080"]
Nov 28, 2017 2:11:23 PM org.apache.coyote.AbstractProtocol init
SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-18080"]

However, this parser only recognises single lines. Please refer to its super-class insights.core.LogFileOutput.

When using this parser, consider using a filter or a scan method, e.g.:

CatalinaServerLog.filters.append('initializing ProtocolHandler')
CatalinaServerLog.keep_scan('init_pro', 'initializing ProtocolHandler')

Examples

>>> type(log)
<class 'insights.parsers.catalina_log.CatalinaServerLog'>
>>> log.file_path
'/var/log/tomcat/catalina.2017-11-28.log'
>>> log.file_name
'catalina.2017-11-28.log'
>>> log.get('Failed to initialize')[0]['raw_message']
'SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-18080"]'
>>> '/var/cache/tomcat/temp' in log
True
>>> from datetime import datetime
>>> list(log.get_after(datetime(2017, 11, 28, 14, 11, 21)))[0]['raw_message']
'Nov 28, 2017 2:11:22 PM org.apache.coyote.AbstractProtocol init'
time_format = '%b %d, %Y %I:%M:%S %p'

The timestamp format assumed for the log files. A subclass can override this for files that have a different timestamp format. This can be:

  • A string in strptime() format.

  • A list of strptime() strings.

  • A dictionary with each item’s value being a strptime() string. This allows the item keys to provide some form of documentation.

  • A None value when there is no timestamp info in the log file