B
     9-eå  ã               @   s°   d Z ddlZddlZddlZddlmZ dddddœZG dd	„ d	eƒZe	d
kr¬eddƒZ
e
 d¡ e
 d¡ e
jddd e
 d¡ e
 d¡ e
jddddddddddd
 dS )z9
Created on Thu Dec 25 19:01:54 2014

@author: IBridgePy
é    N)Úretryé
   é   é   )ÚNOTSETÚDEBUGÚINFOÚERRORc               @   s|   e Zd Zddd„Zdd„ Zedd	d
ddd„ƒZdd„ Zd dd„Zd!dd„Z	d"dd„Z
d#dd„Zdd„ Zdd„ Zdd„ ZdS )$ÚSimpleLoggerÚdefaultTFc             C   sÚ   t j  t d¡¡ ¡ dkr(t d¡| _n.t j  t d¡¡ ¡ dkrPt d¡| _nd| _|| _|| _t| | _	d| _
|| _g | _|| _|dkr¢tj t ¡ d¡| _n|| _tj | j¡sÖt | j¡ ttd	| jf  ƒ dS )
z8 determine US Eastern time zone depending on EST or EDT z
US/EasternÚEDTz	Etc/GMT+4ÚESTz	Etc/GMT+5Nr   ÚLogz3::__init__: WARNING, create a folder of "Log" at %s)ÚdatetimeÚnowÚpytzÚtimezoneÚtznameÚUSeasternTimeZoneÚaddTimeÚfilenameÚLevelÚ	_logLevelÚ	_log_fileÚ_logInMemoryÚ_allLogMessagesListÚ_verboseÚosÚpathÚjoinÚgetcwdÚ
folderPathÚisdirÚmakedirsÚprintÚ__name__)Úselfr   ÚlogLevelr!   r   ÚlogInMemoryÚverbose© r*   ú¹G:\My Drive\STUDY\EPAT\09 TBP - Trading & Back-testing Platforms\TBP04 - Backtesting & Live Trading\IB IBridgePy API\02 Python 3.7 IBridgePy_Win_Anaconda37_64\BasicPyLib\simpleLogger.pyÚ__init__   s$    
zSimpleLogger.__init__c             C   s   d| j f S )Nz{fileName=%s})r   )r&   r*   r*   r+   Ú__str__,   s    zSimpleLogger.__str__é   iÐ  )Zstop_max_attempt_numberZ
wait_fixedc             C   s~   t j j| jd}| jr"|r"t|ƒ | jr6| j |¡ nD|  ¡  | j	rb| j
 t|ƒd | d ¡ n| j
 |d ¡ |  ¡  d S )N)Útzz: Ú
)r   r   r   r   r$   r   r   ÚappendÚ	open_filer   r   ÚwriteÚstrÚ	close_log)r&   Úmsgr)   ÚcurrentTimer*   r*   r+   Ú_write_to_log/   s    
zSimpleLogger._write_to_logc             C   s2   | j r.|  ¡  d | j ¡}| j |¡ |  ¡  d S )Nr0   )r   r2   r   r   r3   r5   )r&   ZallLogr*   r*   r+   Úwrite_all_messages_to_file>   s
    z'SimpleLogger.write_all_messages_to_filec             C   s    | j td kr| j||d d S )Nr   )r)   )r   r   r8   )r&   r6   r)   r*   r*   r+   ÚnotsetE   s    zSimpleLogger.notsetc             C   s    | j td kr| j||d d S )Nr   )r)   )r   r   r8   )r&   r6   r)   r*   r*   r+   ÚdebugI   s    zSimpleLogger.debugc             C   s    | j td kr| j||d d S )Nr   )r)   )r   r   r8   )r&   r6   r)   r*   r*   r+   ÚinfoM   s    zSimpleLogger.infoc             C   s    | j td kr| j||d d S )Nr	   )r)   )r   r   r8   )r&   r6   r)   r*   r*   r+   ÚerrorQ   s    zSimpleLogger.errorc             O   sR   d}x|D ]}|t |ƒd 7 }q
W x |D ]}|t || ƒd 7 }q(W |  |¡ d S )NÚ ú )r4   r8   )r&   ÚargZkwrsr6   Úctr*   r*   r+   ÚrecordU   s    

zSimpleLogger.recordc             C   s   | j  ¡  d S )N)r   Úclose)r&   r*   r*   r+   r5   ]   s    zSimpleLogger.close_logc             C   s   t tj | j| j¡dƒ| _d S )NÚa)Úopenr   r   r   r!   r   r   )r&   r*   r*   r+   r2   `   s    zSimpleLogger.open_fileN)r   TFT)T)T)T)T)T)r%   Ú
__module__Ú__qualname__r,   r-   r   r8   r9   r:   r;   r<   r=   rB   r5   r2   r*   r*   r*   r+   r
      s   





r
   Ú__main__zTestLog.txtr   ztest_me test_mez	test_me 1z	test_me 2F)r)   z	test_me 3z	test_me 4é   é   r.   Útest_meZretesté   é   é   )rD   ÚbÚc)Ú__doc__r   r   r   ZBasicPyLib.retryingr   r   Úobjectr
   r%   rP   r<   rB   r*   r*   r*   r+   Ú<module>   s"   P




