def write(self, *args, **kwargs):
        if kwargs.get('level', SIPLOG_INFO) < self.level:
            return
        ltime = kwargs.get('ltime', None)
        if ltime == None:
            ltime = time()
        call_id = kwargs.get('call_id', self.call_id)
        obuf = '%s.%.3d/%s/%s: %s\n' % (strftime('%d %b %H:%M:%S', localtime(ltime)), \
          (ltime % 1) * 1000, call_id, self.app, \
          reduce(lambda x, y: x + y, [str(x) for x in args]))
        try:
            self.flock(self.log, LOCK_EX)
        except IOError, e:
            # Catch ENOTSUP
            if e.args[0] != 45:
                raise e
            self.flock = lambda x, y: None
        try:
            self.log.write(obuf)
        except __HOLE__, e:
            if e.args[0] != EINTR:
                raise e
        self.log.flush()
        self.flock(self.log, LOCK_UN)
dataset/ETHPy150Open hgascon/pulsar/pulsar/core/sippy/SipLogger.py/SipLogger.write