o
    va                     @   s  d Z ddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZmZ ddlmZ dejv rAejejd ddZndZd	ejv rsejejd	 rseejd	 ejrseejejd	 d
 ejejd	 d
dZn-ejereeejreejed
 ejed
dZneje de Zdddddgdddiddiddiddiddddddeddd d!d"d#ddgdd$ddgdd$dgdd$ddgd%d$ddgd%d$ddgd%d$d&d'Zd+d)d*Ze ZdS ),zCustom logger class.    N)BSDLINUXMACOSSUNOSWINDOWSWSL)safe_makedirsHOMEz.localZshare ZXDG_CACHE_HOMEZglanceszglances.logzglances-{}.log   FalseINFOfileconsole)levelhandlersformatz+%(asctime)s -- %(levelname)s -- %(message)sz%(levelname)s -- %(message)szJ%(asctime)s -- %(levelname)s -- %(message)s (%(funcName)s in %(filename)s)z%(message)s)standardZshortZlongfreeDEBUGz$logging.handlers.RotatingFileHandleri@B    r   )r   classZmaxBytesZbackupCount	formatterfilenameZCRITICALzlogging.StreamHandlerr   )r   r   r   )r   r   )r   r   ZERROR)debugverboser   ZrequestsZelasticsearchzelasticsearch.trace)versionZdisable_existing_loggersrootZ
formattersr   ZloggersLOG_CFGc                 C   sl   t  }t}t| d}|r.tj|r.t|d}t	|}W d   n1 s)w   Y  t j
| |S )zBuild and return the logger.

    env_key define the env var where a path to a specific JSON logger
            could be defined

    :return: logger -- Logger instance
    NZrt)loggingZ	getLoggerLOGGING_CFGosgetenvpathexistsopenjsonloadconfigZ
dictConfig)Zenv_keyZ_loggerr(   Z	user_filef r*   0/usr/lib/python3/dist-packages/glances/logger.pyglances_loggerv   s   r,   )r   )__doc__r!   r&   ZgetpassZtempfiler   Zlogging.configZglances.globalsr   r   r   r   r   r   r   environr#   joinZ_XDG_CACHE_HOMEisdiraccessW_OKZLOG_FILENAMEZ
gettempdirr   Zgetuserr    r,   loggerr*   r*   r*   r+   <module>   s    

	
A
