3
O6b}                  @   sv   d 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 )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               @   s(   e Zd ZdZdd Zdd Z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
    c             C   s   t jdj| d S )Nz[Command {0.command_name} with request id {0.request_id} started on server {0.connection_id})logginginfoformat)selfevent r	   T/var/www/html/sandeepIITI/myenv/lib/python3.6/site-packages/pymongo/event_loggers.pystarted-   s    zCommandLogger.startedc             C   s   t jdj| d S )NzCommand {0.command_name} with request id {0.request_id} on server {0.connection_id} succeeded in {0.duration_micros} microseconds)r   r   r   )r   r   r	   r	   r
   	succeeded2   s    zCommandLogger.succeededc             C   s   t jdj| d S )Nz~Command {0.command_name} with request id {0.request_id} on server {0.connection_id} failed in {0.duration_micros} microseconds)r   r   r   )r   r   r	   r	   r
   failed8   s    zCommandLogger.failedN)__name__
__module____qualname____doc__r   r   r   r	   r	   r	   r
   r   $   s   r   c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	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             C   s   t jdj| d S )Nz;Server {0.server_address} added to topology {0.topology_id})r   r   r   )r   r   r	   r	   r
   openedI   s    zServerLogger.openedc             C   s,   |j j}|jj}||kr(tjdj| d S )Nz}Server {0.server_address} changed type from {0.previous_description.server_type_name} to {0.new_description.server_type_name})previous_descriptionZserver_typenew_descriptionr   r   r   )r   r   Zprevious_server_typeZnew_server_typer	   r	   r
   description_changedM   s    z ServerLogger.description_changedc             C   s   t jdj| d S )Nz?Server {0.server_address} removed from topology {0.topology_id})r   warningr   )r   r   r	   r	   r
   closedW   s    zServerLogger.closedN)r   r   r   r   r   r   r   r	   r	   r	   r
   r   ?   s   	
r   c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	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             C   s   t jdj| d S )Nz*Heartbeat sent to server {0.connection_id})r   r   r   )r   r   r	   r	   r
   r   f   s    zHeartbeatLogger.startedc             C   s   t jdj| d S )NzMHeartbeat to server {0.connection_id} succeeded with reply {0.reply.document})r   r   r   )r   r   r	   r	   r
   r   j   s    zHeartbeatLogger.succeededc             C   s   t jdj| d S )NzAHeartbeat to server {0.connection_id} failed with error {0.reply})r   r   r   )r   r   r	   r	   r
   r   p   s    zHeartbeatLogger.failedN)r   r   r   r   r   r   r   r	   r	   r	   r
   r   \   s   	r   c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	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             C   s   t jdj| d S )Nz'Topology with id {0.topology_id} opened)r   r   r   )r   r   r	   r	   r
   r      s    zTopologyLogger.openedc             C   sd   t jdj| |jj}|jj}||kr8t jdj| |jj sLt jd |jj s`t jd d S )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   Ztopology_typer   Zhas_writable_serverr   Zhas_readable_server)r   r   Zprevious_topology_typeZnew_topology_typer	   r	   r
   r      s    


z"TopologyLogger.description_changedc             C   s   t jdj| d S )Nz'Topology with id {0.topology_id} closed)r   r   r   )r   r   r	   r	   r
   r      s    zTopologyLogger.closedN)r   r   r   r   r   r   r   r	   r	   r	   r
   r   u   s   	r   c               @   s`   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd ZdS )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             C   s   t jdj| d S )Nz[pool {0.address}] pool created)r   r   r   )r   r   r	   r	   r
   pool_created   s    z!ConnectionPoolLogger.pool_createdc             C   s   t jdj| d S )Nz[pool {0.address}] pool cleared)r   r   r   )r   r   r	   r	   r
   pool_cleared   s    z!ConnectionPoolLogger.pool_clearedc             C   s   t jdj| d S )Nz[pool {0.address}] pool closed)r   r   r   )r   r   r	   r	   r
   pool_closed   s    z ConnectionPoolLogger.pool_closedc             C   s   t jdj| d S )Nz>[pool {0.address}][conn #{0.connection_id}] connection created)r   r   r   )r   r   r	   r	   r
   connection_created   s    z'ConnectionPoolLogger.connection_createdc             C   s   t jdj| d S )NzF[pool {0.address}][conn #{0.connection_id}] connection setup succeeded)r   r   r   )r   r   r	   r	   r
   connection_ready   s    z%ConnectionPoolLogger.connection_readyc             C   s   t jdj| d S )NzQ[pool {0.address}][conn #{0.connection_id}] connection closed, reason: {0.reason})r   r   r   )r   r   r	   r	   r
   connection_closed   s    z&ConnectionPoolLogger.connection_closedc             C   s   t jdj| d S )Nz/[pool {0.address}] connection check out started)r   r   r   )r   r   r	   r	   r
   connection_check_out_started   s    z1ConnectionPoolLogger.connection_check_out_startedc             C   s   t jdj| d S )NzB[pool {0.address}] connection check out failed, reason: {0.reason})r   r   r   )r   r   r	   r	   r
   connection_check_out_failed   s    z0ConnectionPoolLogger.connection_check_out_failedc             C   s   t jdj| d S )NzJ[pool {0.address}][conn #{0.connection_id}] connection checked out of pool)r   r   r   )r   r   r	   r	   r
   connection_checked_out   s    z+ConnectionPoolLogger.connection_checked_outc             C   s   t jdj| d S )NzH[pool {0.address}][conn #{0.connection_id}] connection checked into pool)r   r   r   )r   r   r	   r	   r
   connection_checked_in   s    z*ConnectionPoolLogger.connection_checked_inN)r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r	   r	   r	   r
   r      s   r   )r   r   Zpymongor   ZCommandListenerr   ZServerListenerr   ZServerHeartbeatListenerr   ZTopologyListenerr   ZConnectionPoolListenerr   r	   r	   r	   r
   <module>   s   %