Source code for clusterlogger.logfilter

import logging
import os
import socket

__all__ = ['HazelHenFilter']


[docs]class HazelHenFilter(logging.Filter): """Filter for adding contextual information on ``Hazel Hen`` `Hazel Hen <http://www.hlrs.de/systems/platforms/cray-xc40-hazel-hen/>`_ is the Cray XC40 system at HLRS in Stuttgart. This filter adds information about the currently running job. """
[docs] def __init__(self): """Initialize a new HazelHenFilter :raises: None """ self.jobid = os.environ.get('PBS_JOBID', -1) """The job identifier assigned to the job by the batch system. This is the same number you see when you do qstat. -1 if logging when not running in a job. """ self.logname = os.environ.get('PBS_O_LOGNAME') """Value of the LOGNAME variable in the environment in which qsub was executed""" self.jobname = os.environ.get('PBS_JOBNAME') """The job name supplied by the user""" self.queue = os.environ.get('PBS_QUEUE') """The name of the queue from which the job is executed""" self.fqdn = socket.getfqdn() """The fully qualified domain name.""" self.sitename = os.environ.get('SITE_NAME') """The site name of the cluster""" self.platform = os.environ.get('SITE_PLATFORM_NAME') """The cluster platform on the site. E.g. ``hazelhen``."""
[docs] def filter(self, record): """Add contextual information to the log record :param record: the log record :type record: :class:`logging.LogRecord` :returns: True, if log should get sent :rtype: :class:`bool` :raises: None """ record.sitename = self.sitename record.platform = self.platform record.jobid = self.jobid record.submitter = self.logname record.jobname = self.jobname record.queue = self.queue record.fqdn = self.fqdn return True