Ejemplo n.º 1
0
    def testAppend(self):
        log = logfile.LogFile(self.name, self.dir)
        log.write("0123456789")
        log.close()

        log = logfile.LogFile(self.name, self.dir)
        self.assertEquals(log.size, 10)
        self.assertEquals(log._file.tell(), log.size)
        log.write("abc")
        self.assertEquals(log.size, 13)
        self.assertEquals(log._file.tell(), log.size)
        f = log._file
        f.seek(0, 0)
        self.assertEquals(f.read(), "0123456789abc")
        log.close()
Ejemplo n.º 2
0
    def test_persistence(self):
        """
        L{LogFile} objects can be pickled and unpickled, which preserves all
        the various attributes of the log file.
        """
        rotateLength = 12345
        defaultMode = 0o642
        maxRotatedFiles = 42

        log = logfile.LogFile(self.name, self.dir, rotateLength, defaultMode,
                              maxRotatedFiles)
        log.write("123")
        log.close()

        copy = pickle.loads(pickle.dumps(log))
        self.addCleanup(copy.close)

        # Check that the unpickled log is the same as the original one.
        self.assertEqual(self.name, copy.name)
        self.assertEqual(self.dir, copy.directory)
        self.assertEqual(self.path, copy.path)
        self.assertEqual(rotateLength, copy.rotateLength)
        self.assertEqual(defaultMode, copy.defaultMode)
        self.assertEqual(maxRotatedFiles, copy.maxRotatedFiles)
        self.assertEqual(log.size, copy.size)
Ejemplo n.º 3
0
def start_twisted_logging(sub_path):

    def custom_emit(self, event_dict):
        """Custom emit for FileLogObserver"""
        text = log.textFromEventDict(event_dict)
        if text is None:
            return
        self.timeFormat = '[%Y-%m-%d %H:%M:%S %f]'
        time_str = self.formatTime(event_dict['time'])
        fmt_dict = {'text': text.replace("\n", "\n\t")}
        msg_str = log._safeFormat("%(text)s\n", fmt_dict)
        util.untilConcludes(self.write, time_str + " " + msg_str)
        util.untilConcludes(self.flush)

    total_path = os.path.join(logging_file_root_path, sub_path)

    # reload(sys)
    # sys.setdefaultencoding('utf8')
    # if not os.path.exists(total_path):
    #     os.makedirs(total_path)

    file_path = os.path.join(total_path, TWISTED_LOG_NAME)
    file_path = file_path.replace("\\", "/")
    if not os.path.exists(file_path):
        print("文件不存在")
    f = logfile.LogFile(file_path, "./", rotateLength=1024 * 1024, maxRotatedFiles=3)
    log.FileLogObserver.emit = custom_emit
    log.startLogging(f, setStdout=False)
    log.startLogging(sys.stdout)
Ejemplo n.º 4
0
def start_logger(spider_name):

    # TODO: FIX read for files like spidername.log.1
    filename = datetime.now().strftime("%Y-%m-%d." + spider_name + ".log")
    logfile_ = logfile.LogFile(filename, GLOBAL_PATH + '/logs')
    logger = ScrapyFileLogObserver(logfile_, logging.DEBUG)
    tlog.addObserver(logger.emit)
Ejemplo n.º 5
0
    def test_noPermission(self):
        """
        Check it keeps working when permission on dir changes.
        """
        log = logfile.LogFile(self.name, self.dir)
        self.addCleanup(log.close)
        log.write("abc")

        # change permissions so rotation would fail
        os.chmod(self.dir, 0o555)

        # if this succeeds, chmod doesn't restrict us, so we can't
        # do the test
        try:
            f = open(os.path.join(self.dir, "xxx"), "w")
        except (OSError, IOError):
            pass
        else:
            f.close()
            return

        log.rotate()  # this should not fail

        log.write("def")
        log.flush()

        f = log._file
        self.assertEqual(f.tell(), 6)
        f.seek(0, 0)
        self.assertEqual(f.read(), b"abcdef")
Ejemplo n.º 6
0
    def test_maxNumberOfLog(self):
        """
        Test it respect the limit on the number of files when maxRotatedFiles
        is not None.
        """
        log = logfile.LogFile(self.name,
                              self.dir,
                              rotateLength=10,
                              maxRotatedFiles=3)
        self.addCleanup(log.close)
        log.write("1" * 11)
        log.write("2" * 11)
        self.assertTrue(os.path.exists("{0}.1".format(self.path)))

        log.write("3" * 11)
        self.assertTrue(os.path.exists("{0}.2".format(self.path)))

        log.write("4" * 11)
        self.assertTrue(os.path.exists("{0}.3".format(self.path)))
        with open("{0}.3".format(self.path)) as fp:
            self.assertEqual(fp.read(), "1" * 11)

        log.write("5" * 11)
        with open("{0}.3".format(self.path)) as fp:
            self.assertEqual(fp.read(), "2" * 11)
        self.assertFalse(os.path.exists("{0}.4".format(self.path)))
Ejemplo n.º 7
0
    def test_rotation(self):
        """
        Rotating log files autorotate after a period of time, and can also be
        manually rotated.
        """
        # this logfile should rotate every 10 bytes
        with contextlib.closing(
                logfile.LogFile(self.name, self.dir, rotateLength=10)) as log:

            # test automatic rotation
            log.write("123")
            log.write("4567890")
            log.write("1" * 11)
            self.assertTrue(os.path.exists("{0}.1".format(self.path)))
            self.assertFalse(os.path.exists("{0}.2".format(self.path)))
            log.write('')
            self.assertTrue(os.path.exists("{0}.1".format(self.path)))
            self.assertTrue(os.path.exists("{0}.2".format(self.path)))
            self.assertFalse(os.path.exists("{0}.3".format(self.path)))
            log.write("3")
            self.assertFalse(os.path.exists("{0}.3".format(self.path)))

            # test manual rotation
            log.rotate()
            self.assertTrue(os.path.exists("{0}.3".format(self.path)))
            self.assertFalse(os.path.exists("{0}.4".format(self.path)))

        self.assertEqual(log.listLogs(), [1, 2, 3])
Ejemplo n.º 8
0
    def testNoPermission(self):
        "logfile: check it keeps working when permission on dir changes."
        log = logfile.LogFile(self.name, self.dir)
        log.write("abc")

        # change permissions so rotation would fail
        os.chmod(self.dir, 0444)

        try:
            # if this succeeds, chmod doesn't restrict us, so we can't
            # do the test
            try:
                f = open(os.path.join(self.dir, "xxx"), "w")
            except (OSError, IOError):
                pass
            else:
                f.close()
                return

            log.rotate()  # this should not fail

            log.write("def")
            log.flush()

            f = log._file
            self.assertEquals(f.tell(), 6)
            f.seek(0, 0)
            self.assertEquals(f.read(), "abcdef")
            log.close()

        finally:
            # reset permission so tearDown won't fail, regardless of if an
            # assertion was raised.
            os.chmod(self.dir, 0777)
def get_json_log_observer():
    f = logfile.LogFile("carbon_forwarder.log", log_dir, rotateLength=log_rotate_length, maxRotatedFiles=max_rotated_log_files)
    observer = jsonFileLogObserver(f)
    filterer = FilteringLogObserver(observer,
        [LogLevelFilterPredicate(
            LogLevel.levelWithName(log_level))])
    return filterer
Ejemplo n.º 10
0
def openLogFile(logfile, max_file_size, rotated_log_files):
    name = os.path.basename(logfile)
    directory = os.path.dirname(logfile)

    return txlogfile.LogFile(name,
                             directory,
                             rotateLength=max_file_size,
                             maxRotatedFiles=rotated_log_files)
Ejemplo n.º 11
0
 def startService(self):
     # logfile is a file-like object that supports rotation
     self.logFile = logfile.LogFile(self.logName,
                                    self.logDir,
                                    rotateLength=self.maxLogSize)
     self.logFile.rotate()  # force rotation each time restarted
     self.errlog = ErrorLog(self.logFile)
     self.errlog.start()
Ejemplo n.º 12
0
def _configureTwistedLog():
    theLog = logfile.LogFile("web.log", base.getConfig("logDir"))
    log.startLogging(theLog, setStdout=False)

    def rotator():
        theLog.shouldRotate()
        reactor.callLater(86400, rotator)

    rotator()
Ejemplo n.º 13
0
 def test_fromFullPath(self):
     """
     Test the fromFullPath method.
     """
     log1 = logfile.LogFile(self.name, self.dir, 10, defaultMode=0777)
     log2 = logfile.LogFile.fromFullPath(self.path, 10, defaultMode=0777)
     self.assertEquals(log1.name, log2.name)
     self.assertEquals(os.path.abspath(log1.path), log2.path)
     self.assertEquals(log1.rotateLength, log2.rotateLength)
     self.assertEquals(log1.defaultMode, log2.defaultMode)
Ejemplo n.º 14
0
 def testModePreservation(self):
     "logfile: check rotated files have same permissions as original."
     if not hasattr(os, "chmod"): return
     f = open(self.path, "w").close()
     os.chmod(self.path, 0707)
     mode = os.stat(self.path)[0]
     log = logfile.LogFile(self.name, self.dir)
     log.write("abc")
     log.rotate()
     self.assertEquals(mode, os.stat(self.path)[0])
Ejemplo n.º 15
0
 def test_defaultPermissions(self):
     """
     Test the default permission of the log file: if the file exist, it
     should keep the permission.
     """
     with open(self.path, "wb"):
         os.chmod(self.path, 0o707)
         currentMode = stat.S_IMODE(os.stat(self.path)[stat.ST_MODE])
     log1 = logfile.LogFile(self.name, self.dir)
     self.assertEqual(stat.S_IMODE(os.stat(self.path)[stat.ST_MODE]), currentMode)
     self.addCleanup(log1.close)
Ejemplo n.º 16
0
    def test_append(self):
        """
        Log files can be written to, closed. Their size is the number of
        bytes written to them. Everything that was written to them can
        be read, even if the writing happened on separate occasions,
        and even if the log file was closed in between.
        """
        with contextlib.closing(logfile.LogFile(self.name, self.dir)) as log:
            log.write("0123456789")

        log = logfile.LogFile(self.name, self.dir)
        self.addCleanup(log.close)
        self.assertEqual(log.size, 10)
        self.assertEqual(log._file.tell(), log.size)
        log.write("abc")
        self.assertEqual(log.size, 13)
        self.assertEqual(log._file.tell(), log.size)
        f = log._file
        f.seek(0, 0)
        self.assertEqual(f.read(), b"0123456789abc")
Ejemplo n.º 17
0
    def testWriting(self):
        log = logfile.LogFile(self.name, self.dir)
        log.write("123")
        log.write("456")
        log.flush()
        log.write("7890")
        log.close()

        f = open(self.path, "r")
        self.assertEquals(f.read(), "1234567890")
        f.close()
Ejemplo n.º 18
0
 def test_specifiedPermissions(self):
     """
     Test specifying the permissions used on the log file.
     """
     log1 = logfile.LogFile(self.name, self.dir, defaultMode=0066)
     mode = stat.S_IMODE(os.stat(self.path)[stat.ST_MODE])
     if runtime.platform.isWindows():
         # The only thing we can get here is global read-only
         self.assertEquals(mode, 0444)
     else:
         self.assertEquals(mode, 0066)
Ejemplo n.º 19
0
 def testModePreservation(self):
     """
     Check rotated files have same permissions as original.
     """
     f = open(self.path, "w").close()
     os.chmod(self.path, 0707)
     mode = os.stat(self.path)[stat.ST_MODE]
     log = logfile.LogFile(self.name, self.dir)
     log.write("abc")
     log.rotate()
     self.assertEquals(mode, os.stat(self.path)[stat.ST_MODE])
Ejemplo n.º 20
0
    def test_listLogsIgnoresZeroSuffixedFiles(self):
        """
        L{LogFile.listLogs} ignores log files which rotated suffix is 0.
        """
        log = logfile.LogFile(self.name, self.dir)
        self.addCleanup(log.close)

        for i in range(0, 3):
            with open("{0}.{1}".format(log.path, i), "w") as fp:
                fp.write("123")

        self.assertEqual([1, 2], log.listLogs())
Ejemplo n.º 21
0
    def test_log_file_data_type_text(self):
        """
        Test a LogFile that uses text instead of binary for data writing
        """
        with contextlib.closing(logfile.LogFile(self.name, self.dir, data_type_text=True)) as log:
            log.write("123")
            log.write("456")
            log.flush()
            log.write(b"7890")

        with open(self.path) as f:
            self.assertEqual(f.read(), "1234567890")
Ejemplo n.º 22
0
    def test_log_file_data_type_binary_line_endings(self):
        """
        Test a LogFile that uses text binary data type doesn't get windows line endings converted
        """
        with contextlib.closing(logfile.LogFile(self.name, self.dir, data_type_text=False)) as log:
            log.write(b"123\n")
            log.write(b"456\n")
            log.flush()
            log.write(b"7890\n")

        with open(self.path, 'rb') as f:
            self.assertEqual(f.read(), b"123\n456\n7890\n")
Ejemplo n.º 23
0
def start_logger(debug):
    """
    Logger will log for file if debug set to True else will print to cmdline.
    The logfiles will rotate after exceeding since of 1M and 100 count.
    """
    if debug:
        tlog.startLogging(sys.stdout)
    else:
        filename = datetime.now().strftime("%Y-%m-%d.scrapy.log")
        logfile_ = logfile.LogFile(filename, 'logs/', maxRotatedFiles=100)
        logger = ScrapyFileLogObserver(logfile_, logging.INFO)
        tlog.addObserver(logger.emit)
Ejemplo n.º 24
0
 def test_defaultPermissions(self):
     """
     Test the default permission of the log file: if the file exist, it
     should keep the permission.
     """
     f = file(self.path, "w")
     os.chmod(self.path, 0707)
     currentMode = stat.S_IMODE(os.stat(self.path)[stat.ST_MODE])
     f.close()
     log1 = logfile.LogFile(self.name, self.dir)
     self.assertEquals(stat.S_IMODE(os.stat(self.path)[stat.ST_MODE]),
                       currentMode)
Ejemplo n.º 25
0
    def start_logging(self):
        """
        If configured enables logserver
        """
        twlog.startLogging(sys.stdout)
        if GLSettings.logfile:
            name = os.path.basename(GLSettings.logfile)
            directory = os.path.dirname(GLSettings.logfile)

            logfile = twlogfile.LogFile(name, directory,
                                        rotateLength=GLSettings.log_file_size,
                                        maxRotatedFiles=GLSettings.maximum_rotated_log_files)
            twlog.addObserver(GLLogObserver(logfile).emit)
Ejemplo n.º 26
0
    def test_writing(self):
        """
        Log files can be written to, flushed and closed. Closing a log file
        also flushes it.
        """
        with contextlib.closing(logfile.LogFile(self.name, self.dir)) as log:
            log.write("123")
            log.write("456")
            log.flush()
            log.write("7890")

        with open(self.path) as f:
            self.assertEqual(f.read(), "1234567890")
Ejemplo n.º 27
0
    def test_listLogsWithBadlyNamedFiles(self):
        """
        L{LogFile.listLogs} doesn't choke if it encounters a file with an
        unexpected name.
        """
        log = logfile.LogFile(self.name, self.dir)
        self.addCleanup(log.close)

        with open("{0}.1".format(log.path), "w") as fp:
            fp.write("123")
        with open("{0}.bad-file".format(log.path), "w") as fp:
            fp.write("123")

        self.assertEqual([1], log.listLogs())
Ejemplo n.º 28
0
    def __init__(self, logger, ftpEndpoint, mtrimSerial):
        ''' Initializes our custom protocol

        :param logger: The local file to store results
        :param ftpEndpoint: The endpoint to send results to and read recipes from
        '''
        SerialClientProtocol.__init__(self)
        self.logger = logger
        self.ftpEndpoint = ftpEndpoint
        self.mtrimSerial = mtrimSerial
        self.logFile = logger.getFileName()
        self.ENQCount = 0
        self.lcOEE = LoopingCall(self.startOEEData)
        self.lcAlarms = LoopingCall(self.startAlarmsData)
        self.lcFTP = LoopingCall(self.startFTPTransfer)
        self._reconnecting = False
        self.config = utilities.optionReader()
        fLogFile = logfile.LogFile('df1comms.log', '/home/pi/projects/newSLC/logs', maxRotatedFiles=2)
        fLogObserver = log.FileLogObserver(fLogFile)
        log.startLogging(logfile.LogFile('df1comms.log', '/home/pi/projects/newSLC/logs', maxRotatedFiles=2))
        #log.startLogging(sys.stdout)
        self.notified = False
        self.transferred = False
        self.loaded = False
Ejemplo n.º 29
0
    def __init__(self,
                 filelog=None,
                 dirlog="../log/",
                 rotateLengthMB=1,
                 maxRotatedFiles=100):
        f = sys.stdout
        if filelog:
            if not os.path.isdir(dirlog):
                os.makedirs(dirlog)
            f = logfile.LogFile(filelog,
                                dirlog,
                                rotateLength=rotateLengthMB * 1000000,
                                maxRotatedFiles=maxRotatedFiles)

        self.logger = LevelFileLogObserver(f, logging.DEBUG)
Ejemplo n.º 30
0
    def test_writing(self):
        """
        Log files can be written to, flushed and closed. Closing a log file
        also flushes it.
        """
        log = logfile.LogFile(self.name, self.dir)
        log.write("123")
        log.write("456")
        log.flush()
        log.write("7890")
        log.close()

        f = open(self.path)
        self.assertEqual(f.read(), "1234567890")
        f.close()