o
    'h$                     @  s   d Z ddlmZ ddlZddlmZ G dd dejZG dd dejZ	G d	d
 d
ej
ZG dd dejZG dd dejZdS )aa  Example event logger classes.

.. versionadded:: 3.11

These loggers can be registered using :func:`register` or
:class:`~pymongo.mongo_client.MongoClient`.

``monitoring.register(CommandLogger())``

or

``MongoClient(event_listeners=[CommandLogger()])``

.. seealso:: This module is compatible with both the synchronous and asynchronous PyMongo APIs.

    )annotationsN)
monitoringc                   @  .   e Zd ZdZdddZdd	d
ZdddZdS )CommandLoggeraI  A simple listener that logs command events.

    Listens for :class:`~pymongo.monitoring.CommandStartedEvent`,
    :class:`~pymongo.monitoring.CommandSucceededEvent` and
    :class:`~pymongo.monitoring.CommandFailedEvent` events and
    logs them at the `INFO` severity level using :mod:`logging`.
    .. versionadded:: 3.11
    eventmonitoring.CommandStartedEventreturnNonec                 C  s&   t d|j d|j d|j  d S )NCommand  with request id z started on server )logginginfocommand_name
request_idconnection_idselfr    r   Q/var/www/html/olx_land/venv/lib/python3.10/site-packages/pymongo/event_loggers.pystarted1   s   
zCommandLogger.started monitoring.CommandSucceededEventc                 C  0   t d|j d|j d|j d|j d	 d S )Nr
   r    on server z succeeded in  microsecondsr   r   r   r   r   duration_microsr   r   r   r   	succeeded8      
zCommandLogger.succeededmonitoring.CommandFailedEventc                 C  r   )Nr
   r   r   z failed in r   r   r   r   r   r   failed@   r   zCommandLogger.failedN)r   r   r   r	   )r   r   r   r	   )r   r   r   r	   __name__
__module____qualname____doc__r   r   r   r   r   r   r   r   '   s
    
	
r   c                   @  r   )ServerLoggeraZ  A simple listener that logs server discovery events.

    Listens for :class:`~pymongo.monitoring.ServerOpeningEvent`,
    :class:`~pymongo.monitoring.ServerDescriptionChangedEvent`,
    and :class:`~pymongo.monitoring.ServerClosedEvent`
    events and logs them at the `INFO` severity level using :mod:`logging`.

    .. versionadded:: 3.11
    r   monitoring.ServerOpeningEventr   r	   c                 C     t d|j d|j  d S )NServer z added to topology )r   r   server_addresstopology_idr   r   r   r   openedT      zServerLogger.opened(monitoring.ServerDescriptionChangedEventc                 C  sF   |j j}|jj}||kr!td|j d|j j d|jj  d S d S )Nr(    changed type from  to )previous_descriptionserver_typenew_descriptionr   r   r)   server_type_name)r   r   previous_server_typenew_server_typer   r   r   description_changedW   s   
z ServerLogger.description_changedmonitoring.ServerClosedEventc                 C  r'   )Nr(   z removed from topology )r   warningr)   r*   r   r   r   r   closedb   r,   zServerLogger.closedN)r   r&   r   r	   )r   r-   r   r	   )r   r7   r   r	   r!   r"   r#   r$   r+   r6   r9   r   r   r   r   r%   I   s
    


r%   c                   @  r   )HeartbeatLoggeral  A simple listener that logs server heartbeat events.

    Listens for :class:`~pymongo.monitoring.ServerHeartbeatStartedEvent`,
    :class:`~pymongo.monitoring.ServerHeartbeatSucceededEvent`,
    and :class:`~pymongo.monitoring.ServerHeartbeatFailedEvent`
    events and logs them at the `INFO` severity level using :mod:`logging`.

    .. versionadded:: 3.11
    r   &monitoring.ServerHeartbeatStartedEventr   r	   c                 C  s   t d|j  d S )NzHeartbeat sent to server )r   r   r   r   r   r   r   r   q   s   zHeartbeatLogger.started(monitoring.ServerHeartbeatSucceededEventc                 C  s    t d|j d|jj  d S )NHeartbeat to server z succeeded with reply )r   r   r   replydocumentr   r   r   r   r   t   s
   
zHeartbeatLogger.succeeded%monitoring.ServerHeartbeatFailedEventc                 C  r'   )Nr>   z failed with error )r   r8   r   r?   r   r   r   r   r   |   s   zHeartbeatLogger.failedN)r   r<   r   r	   )r   r=   r   r	   )r   rA   r   r	   r    r   r   r   r   r;   f   s
    


r;   c                   @  r   )TopologyLoggera^  A simple listener that logs server topology events.

    Listens for :class:`~pymongo.monitoring.TopologyOpenedEvent`,
    :class:`~pymongo.monitoring.TopologyDescriptionChangedEvent`,
    and :class:`~pymongo.monitoring.TopologyClosedEvent`
    events and logs them at the `INFO` severity level using :mod:`logging`.

    .. versionadded:: 3.11
    r   monitoring.TopologyOpenedEventr   r	   c                 C     t d|j d d S )NTopology with id z openedr   r   r*   r   r   r   r   r+         zTopologyLogger.opened*monitoring.TopologyDescriptionChangedEventc                 C  s   t d|j  |jj}|jj}||kr(t d|j d|jj d|jj  |j s2t d |j	 s>t d d S d S )Nz-Topology description updated for topology id z	Topology r.   r/   zNo writable servers available.zNo readable servers available.)
r   r   r*   r0   topology_typer2   topology_type_namehas_writable_serverr8   has_readable_server)r   r   previous_topology_typenew_topology_typer   r   r   r6      s    



z"TopologyLogger.description_changedmonitoring.TopologyClosedEventc                 C  rD   )NrE   z closedrF   r   r   r   r   r9      rG   zTopologyLogger.closedN)r   rC   r   r	   )r   rH   r   r	   )r   rO   r   r	   r:   r   r   r   r   rB      s
    


rB   c                   @  s~   e Zd ZdZd'ddZd(d	d
Zd)ddZd*ddZd+ddZd,ddZ	d-ddZ
d.ddZd/ddZd0d!d"Zd1d$d%Zd&S )2ConnectionPoolLoggera  A simple listener that logs server connection pool events.

    Listens for :class:`~pymongo.monitoring.PoolCreatedEvent`,
    :class:`~pymongo.monitoring.PoolClearedEvent`,
    :class:`~pymongo.monitoring.PoolClosedEvent`,
    :~pymongo.monitoring.class:`ConnectionCreatedEvent`,
    :class:`~pymongo.monitoring.ConnectionReadyEvent`,
    :class:`~pymongo.monitoring.ConnectionClosedEvent`,
    :class:`~pymongo.monitoring.ConnectionCheckOutStartedEvent`,
    :class:`~pymongo.monitoring.ConnectionCheckOutFailedEvent`,
    :class:`~pymongo.monitoring.ConnectionCheckedOutEvent`,
    and :class:`~pymongo.monitoring.ConnectionCheckedInEvent`
    events and logs them at the `INFO` severity level using :mod:`logging`.

    .. versionadded:: 3.11
    r   monitoring.PoolCreatedEventr   r	   c                 C  rD   )N[pool z] pool createdr   r   addressr   r   r   r   pool_created   rG   z!ConnectionPoolLogger.pool_createdmonitoring.PoolReadyEventc                 C  rD   )NrR   z] pool readyrS   r   r   r   r   
pool_ready   rG   zConnectionPoolLogger.pool_readymonitoring.PoolClearedEventc                 C  rD   )NrR   z] pool clearedrS   r   r   r   r   pool_cleared   rG   z!ConnectionPoolLogger.pool_clearedmonitoring.PoolClosedEventc                 C  rD   )NrR   z] pool closedrS   r   r   r   r   pool_closed   rG   z ConnectionPoolLogger.pool_closed!monitoring.ConnectionCreatedEventc                 C      t d|j d|j d d S )NrR   ][conn #z] connection createdr   r   rT   r   r   r   r   r   connection_created   s    z'ConnectionPoolLogger.connection_createdmonitoring.ConnectionReadyEventc                 C  r]   )NrR   r^   z] connection setup succeededr_   r   r   r   r   connection_ready      z%ConnectionPoolLogger.connection_ready monitoring.ConnectionClosedEventc              	   C  s(   t d|j d|j d|j d d S )NrR   r^   z] connection closed, reason: "")r   r   rT   r   reasonr   r   r   r   connection_closed   s
   z&ConnectionPoolLogger.connection_closed)monitoring.ConnectionCheckOutStartedEventc                 C  rD   )NrR   z] connection check out startedrS   r   r   r   r   connection_check_out_started   s   z1ConnectionPoolLogger.connection_check_out_started(monitoring.ConnectionCheckOutFailedEventc                 C  r'   )NrR   z'] connection check out failed, reason: )r   r   rT   rf   r   r   r   r   connection_check_out_failed   r,   z0ConnectionPoolLogger.connection_check_out_failed$monitoring.ConnectionCheckedOutEventc                 C  r]   )NrR   r^   z ] connection checked out of poolr_   r   r   r   r   connection_checked_out   rc   z+ConnectionPoolLogger.connection_checked_out#monitoring.ConnectionCheckedInEventc                 C  r]   )NrR   r^   z] connection checked into poolr_   r   r   r   r   connection_checked_in   rc   z*ConnectionPoolLogger.connection_checked_inN)r   rQ   r   r	   )r   rV   r   r	   )r   rX   r   r	   )r   rZ   r   r	   )r   r\   r   r	   )r   ra   r   r	   )r   rd   r   r	   )r   rh   r   r	   )r   rj   r   r	   )r   rl   r   r	   )r   rn   r   r	   )r!   r"   r#   r$   rU   rW   rY   r[   r`   rb   rg   ri   rk   rm   ro   r   r   r   r   rP      s    









rP   )r$   
__future__r   r   pymongor   CommandListenerr   ServerListenerr%   ServerHeartbeatListenerr;   TopologyListenerrB   ConnectionPoolListenerrP   r   r   r   r   <module>   s   "$