
    h[                          d Z ddlZddlmZ  G d dej                        Z G d dej                        Z G d d	ej                        Z	 G d
 dej                        Z G d dej                        Zy)zExample 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()])``
    N)
monitoringc                   "    e Zd ZdZd Zd Zd Zy)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
    c                 L    t        j                  dj                  |             y )Nz[Command {0.command_name} with request id {0.request_id} started on server {0.connection_id}logginginfoformatselfevents     S/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/pymongo/event_loggers.pystartedzCommandLogger.started.   s      &u	
    c                 L    t        j                  dj                  |             y )NzCommand {0.command_name} with request id {0.request_id} on server {0.connection_id} succeeded in {0.duration_micros} microsecondsr   r   s     r   	succeededzCommandLogger.succeeded5        "6%=		
r   c                 L    t        j                  dj                  |             y )Nz~Command {0.command_name} with request id {0.request_id} on server {0.connection_id} failed in {0.duration_micros} microsecondsr   r   s     r   failedzCommandLogger.failed=   r   r   N__name__
__module____qualname____doc__r   r   r    r   r   r   r   $   s    


r   r   c                   "    e Zd ZdZd Zd Zd Zy)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
    c                 L    t        j                  dj                  |             y )Nz;Server {0.server_address} added to topology {0.topology_id}r   r   s     r   openedzServerLogger.openedQ   s    U\\]bcdr   c                     |j                   j                  }|j                  j                  }||k7  r%t        j                  dj                  |             y y )Nz}Server {0.server_address} changed type from {0.previous_description.server_type_name} to {0.new_description.server_type_name})previous_descriptionserver_typenew_descriptionr   r	   r
   )r   r   previous_server_typenew_server_types       r   description_changedz ServerLogger.description_changedT   sM    $99EE//;;22LL77=ve} 3r   c                 L    t        j                  dj                  |             y )Nz?Server {0.server_address} removed from topology {0.topology_id}r   warningr
   r   s     r   closedzServerLogger.closed_   s    PWWX]^	
r   Nr   r   r   r   r   r&   r*   r   r   r   r   r   F   s    e	
r   r   c                   "    e Zd ZdZd Zd Zd Zy)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
    c                 L    t        j                  dj                  |             y )Nz*Heartbeat sent to server {0.connection_id}r   r   s     r   r   zHeartbeatLogger.startedp   s    DKKERSr   c                 L    t        j                  dj                  |             y )NzMHeartbeat to server {0.connection_id} succeeded with reply {0.reply.document}r   r   s     r   r   zHeartbeatLogger.succeededs   s    !!'	
r   c                 L    t        j                  dj                  |             y )NzAHeartbeat to server {0.connection_id} failed with error {0.reply}r(   r   s     r   r   zHeartbeatLogger.failed{   s    RYYZ_`	
r   Nr   r   r   r   r-   r-   e   s    T

r   r-   c                   "    e Zd ZdZd Zd Zd Zy)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
    c                 L    t        j                  dj                  |             y )Nz'Topology with id {0.topology_id} openedr   r   s     r   r   zTopologyLogger.opened       AHHOPr   c                    t        j                  dj                  |             |j                  j                  }|j
                  j                  }||k7  r$t        j                  dj                  |             |j
                  j                         st        j                  d       |j
                  j                         st        j                  d       y y )Nz<Topology description updated for topology id {0.topology_id}zTopology {0.topology_id} changed type from {0.previous_description.topology_type_name} to {0.new_description.topology_type_name}zNo writable servers available.zNo readable servers available.)	r   r	   r
   r!   topology_typer#   has_writable_serverr)   has_readable_server)r   r   previous_topology_typenew_topology_types       r   r&   z"TopologyLogger.description_changed   s    MTTUZ[	
 "'!;!;!I!I!11?? 66LL99? $$88:OO<=$$88:OO<= ;r   c                 L    t        j                  dj                  |             y )Nz'Topology with id {0.topology_id} closedr   r   s     r   r*   zTopologyLogger.closed   r4   r   Nr+   r   r   r   r2   r2      s    Q>(Qr   r2   c                   L    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)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
    c                 L    t        j                  dj                  |             y )Nz[pool {0.address}] pool createdr   r   s     r   pool_createdz!ConnectionPoolLogger.pool_created       6==eDEr   c                 L    t        j                  dj                  |             y )Nz[pool {0.address}] pool clearedr   r   s     r   pool_clearedz!ConnectionPoolLogger.pool_cleared   r@   r   c                 L    t        j                  dj                  |             y )Nz[pool {0.address}] pool closedr   r   s     r   pool_closedz ConnectionPoolLogger.pool_closed   s    5<<UCDr   c                 L    t        j                  dj                  |             y )Nz>[pool {0.address}][conn #{0.connection_id}] connection createdr   r   s     r   connection_createdz'ConnectionPoolLogger.connection_created   s    OVVW\]	
r   c                 L    t        j                  dj                  |             y )NzF[pool {0.address}][conn #{0.connection_id}] connection setup succeededr   r   s     r   connection_readyz%ConnectionPoolLogger.connection_ready   s    ))/	
r   c                 L    t        j                  dj                  |             y )NzQ[pool {0.address}][conn #{0.connection_id}] connection closed, reason: {0.reason}r   r   s     r   connection_closedz&ConnectionPoolLogger.connection_closed   s    	
r   c                 L    t        j                  dj                  |             y )Nz/[pool {0.address}] connection check out startedr   r   s     r   connection_check_out_startedz1ConnectionPoolLogger.connection_check_out_started   s    IPPQVWXr   c                 L    t        j                  dj                  |             y )NzB[pool {0.address}] connection check out failed, reason: {0.reason}r   r   s     r   connection_check_out_failedz0ConnectionPoolLogger.connection_check_out_failed   s    SZZ[`a	
r   c                 L    t        j                  dj                  |             y )NzJ[pool {0.address}][conn #{0.connection_id}] connection checked out of poolr   r   s     r   connection_checked_outz+ConnectionPoolLogger.connection_checked_out   s    --3VE]	
r   c                 L    t        j                  dj                  |             y )NzH[pool {0.address}][conn #{0.connection_id}] connection checked into poolr   r   s     r   connection_checked_inz*ConnectionPoolLogger.connection_checked_in   s    ++16%=	
r   N)r   r   r   r   r?   rB   rD   rF   rH   rJ   rL   rN   rP   rR   r   r   r   r=   r=      s=    "FFE



Y



r   r=   )r   r   pymongor   CommandListenerr   ServerListenerr   ServerHeartbeatListenerr-   TopologyListenerr2   ConnectionPoolListenerr=   r   r   r   <module>rY      sp      
J.. 
D
:,, 
>
j88 
8#QZ00 #QL?
:<< ?
r   