Example #1
0
    def test_syslog(self):
        """
        Test
        """

        # Syslog is enabled by default
        SolBase.logging_init("INFO", True, log_callback=self._on_log)
        SolBase.set_compo_name("COMPO_XXX")

        # Emit a log
        self.onLogCallCount = 0
        logger.info("TEST LOG 888")

        self.assertEqual(self.onLogCallCount, 1)
        self.assertIsNotNone(self.lastMessage)
        self.assertGreaterEqual(self.lastMessage.find("TEST LOG 888"), 0)
        self.assertGreaterEqual(self.lastMessage.find("COMPO_XXX:"), 0)
        self.assertGreaterEqual(self.lastMessage.find("| COMPO_XXX |"), 0)
        self.assertGreaterEqual(
            self.lastMessage.find(SolBase.get_machine_name() + " |"), 0)
        logger.info("Received ==> %s", repr(self.lastMessage))

        # Emit a log (str)
        self.onLogCallCount = 0
        logger.info(repr(u"BUF\u001B\u0BD9\U0001A10D\u1501FUB"))

        self.assertEqual(self.onLogCallCount, 1)
        self.assertIsNotNone(self.lastMessage)
        self.assertGreaterEqual(self.lastMessage.find("BUF"), 0)
        self.assertGreaterEqual(self.lastMessage.find("FUB"), 0)
        self.assertGreaterEqual(self.lastMessage.find("COMPO_XXX:"), 0)
        self.assertGreaterEqual(self.lastMessage.find("| COMPO_XXX |"), 0)
        self.assertGreaterEqual(
            self.lastMessage.find(SolBase.get_machine_name() + " |"), 0)
        logger.info("Received ==> %s", repr(self.lastMessage))
Example #2
0
    def emit(self, record):
        """
        Emit a record.
        :param record: The record to log
        :type record: logging.LogRecord
        """

        # Write
        # noinspection PyBroadException
        try:
            # Format
            msg = self.format(record) + '\000'

            # Get component name
            cn = SolBase.get_compo_name()

            # We append the machine+component name at the beginning
            msg = u"{0} | {1} | {2}".format(SolBase.get_machine_name(), cn,
                                            msg)
            msg = msg.encode('utf-8')

            # Add priority + facility (int)
            priority = '<%d>' % self.encodePriority(
                self.facility, self.mapPriority(record.levelname))
            priority = priority.encode('utf-8')

            # Cn
            cn = cn.encode('utf-8')

            # noinspection PyAugmentAssignment
            msg = priority + cn + b": " + msg

            # Notify
            self.notify_log(msg)

            # Send to socket
            if self.unixsocket:
                try:
                    self.socket.send(msg)
                except socket.error:
                    # noinspection PyUnresolvedReferences
                    self._connect_unixsocket(self.address)
                    self.socket.send(msg)
            elif self.socktype == socket.SOCK_DGRAM:
                self.socket.sendto(msg, self.address)
            else:
                self.socket.sendall(msg)
        except GreenletExit:
            pass
        except (KeyboardInterrupt, SystemExit):
            raise
        except:
            self.handleError(record)
Example #3
0
    def test_machine_name(self):
        """
        Test
        """

        self.assertIsNotNone(SolBase.get_machine_name())