'When rotating, rotate the current log.
The default implementation calls the \'rotator\' attribute of the
handler, if it\'s callable, passing the source and dest arguments to
it. If the attribute isn\'t callable (the default is None), the source
is simply renamed to the destination.
:param source: The source filename. This is normally the base
filename, e.g. \'test.log\'
:param dest:   The destination filename. This is normally
what the source is rotated to, e.g. \'test.log.1\'.'

def rotate(self, source, dest):

    if (not callable(self.rotator)):
        if os.path.exists(source):
            os.rename(source, dest)
    else:
        self.rotator(source, dest)
