File: //lib64/python3.9/logging/__pycache__/handlers.cpython-39.pyc
a
    �DOg�  �                   @   sz  d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZ ddlZddl
Z
ddlZdZdZdZdZdZdZd	ZG d
d� dej�ZG dd
� d
e�ZG dd� de�ZG dd� dej�ZG dd� dej�ZG dd� de�ZG dd� dej�ZG dd� dej�ZG dd� dej�Z G dd� dej�Z!G dd� dej�Z"G d d!� d!e"�Z#G d"d#� d#ej�Z$G d$d%� d%e%�Z&dS )&z�
Additional handlers for the logging package for Python. The core package is
based on PEP 282 and comments thereto in comp.lang.python.
Copyright (C) 2001-2021 Vinay Sajip. All Rights Reserved.
To use, simply 'import logging.handlers' and log away!
�    N)�ST_DEV�ST_INO�ST_MTIMEi<#  i=#  i>#  i?#  i  �Q c                   @   s:   e Zd ZdZdZdZddd�Zdd� Zdd	� Zd
d� Z	dS )
�BaseRotatingHandlerz�
    Base class for handlers that rotate log files at a certain point.
    Not meant to be instantiated directly.  Instead, use RotatingFileHandler
    or TimedRotatingFileHandler.
    NFc                 C   s.   t jj| |||||d� || _|| _|| _dS )zA
        Use the specified filename for streamed logging
        ��mode�encoding�delay�errorsN)�logging�FileHandler�__init__r   r	   r   ��self�filenamer   r	   r
   r   � r   �(/usr/lib64/python3.9/logging/handlers.pyr   6   s    �zBaseRotatingHandler.__init__c                 C   sF   z$| � |�r| ��  tj�| |� W n ty@   | �|� Y n0 dS )z�
        Emit a record.
        Output the record to the file, catering for rollover as described
        in doRollover().
        N)�shouldRollover�
doRolloverr   r
   �emit�	Exception�handleError�r   �recordr   r   r   r   A   s    
zBaseRotatingHandler.emitc                 C   s   t | j�s|}n
| �|�}|S )a�  
        Modify the filename of a log file when rotating.
        This is provided so that a custom filename can be provided.
        The default implementation calls the 'namer' attribute of the
        handler, if it's callable, passing the default name to
        it. If the attribute isn't callable (the default is None), the name
        is returned unchanged.
        :param default_name: The default name for the log file.
        )�callable�namer)r   Zdefault_name�resultr   r   r   �rotation_filenameO   s    
z%BaseRotatingHandler.rotation_filenamec                 C   s4   t | j�s$tj�|�r0t�||� n| �||� dS )aL  
        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'.
        N)r   �rotator�os�path�exists�rename)r   �source�destr   r   r   �rotateb   s    
zBaseRotatingHandler.rotate)NFN)
�__name__�
__module__�__qualname__�__doc__r   r   r   r   r   r&