{"id":20381618,"url":"https://github.com/douglasmoraisdev/json_log","last_synced_at":"2025-09-06T16:46:39.108Z","repository":{"id":211454180,"uuid":"263119207","full_name":"douglasmoraisdev/json_log","owner":"douglasmoraisdev","description":"JSON Format log lib for Python, with support to FluentD","archived":false,"fork":false,"pushed_at":"2020-07-13T19:21:44.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-15T07:38:33.125Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/douglasmoraisdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-11T18:04:37.000Z","updated_at":"2020-07-13T19:21:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"48ba9f57-7f8b-46ad-b336-1d026e948b16","html_url":"https://github.com/douglasmoraisdev/json_log","commit_stats":null,"previous_names":["douglasmoraisdev/json_log"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasmoraisdev%2Fjson_log","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasmoraisdev%2Fjson_log/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasmoraisdev%2Fjson_log/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasmoraisdev%2Fjson_log/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/douglasmoraisdev","download_url":"https://codeload.github.com/douglasmoraisdev/json_log/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241933627,"owners_count":20044749,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T02:14:33.145Z","updated_at":"2025-03-04T22:31:37.733Z","avatar_url":"https://github.com/douglasmoraisdev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# json_log\n\nLib para criar logs em formato JSON, com suporte a FluentD. \n\nEsta lib utiliza o [logging](https://docs.python.org/3/library/logging.html) nativo do Python, sobrescrevendo seu output para formato JSON, para uso com FluentD e/ou outras ferramentas de consumo de log em JSON.\n\nAtravés dela, também é possivel incluir tags personalizadas ao JSON de forma fácil e intuitiva.\n\n## Instalação\nAdicionar ao `requirements.txt` do projeto:\n\n```\ngit+https://github.com/douglasmoraisdev/json_log#egg=json_log\n```\n\nOU manualmente com PIP:\n```bash\n$ pip install git+https://github.com/douglasmoraisdev/json_log#egg=json_log\n```\n\n\n\n## Configuração\nA Lib utiliza `o arquivo config.yml` para sua configuração. As mesmas podem ser encontradas no arquivo 'sample.config.yml', e consumidas via arquivo .env, se for o padrão do projeto.\n\n```yml\nLOG_FLUENTD: true #true: utiliza as configuracoes de FluentD a seguir #false: utiliza log em arquivo\nLOG_FLUENTD_HOST: localhost #host do FluentD, se utilizado\nLOG_FLUENTD_PORT: 24224 #porta do FluentD, se utilizado\nLOG_LEVEL: INFO #Nivel de log\nLOG_NAME: teste_log #Nome do arquivo de log, caso não use FluentD\nLOG_LOCAL_PATH: log/ #Path do log, caso não use FluentD\n```\n\n\n## Importação e uso\nPara utilizar o log basta importar o objeto `applog` da package e utilizar os metodos de logging (info, debug, error, etc).\n\n#### params\n* message(required, positional): Texto da mensagem do log\n* **campos personalizados(optional): Parametros nomeados que serão incluidos no log. Ver a sessão `Tags e campos personalizadas` para mais informações.\n\nExemplo:\n```py\nfrom json_log import applog\n\nif __name__ == '__main__':\n    applog.info('Alguma mensagem de log nivel INFO')\n    applog.debug('Alguma mensagem de log nivel DEBUG')    \n\n```\n\nIrá resultar em:\n```json\n{\n    \"@timestamp\": \"2020-05-12 14:08:40,657\",\n    \"appname\": \"teste_log\",\n    \"loglevel\": \"INFO\",\n    \"run_id\": \"470e25bc-7e5d-4af8-b71a-2e22d582cc5a\",\n    \"message\": \"Alguma mensagem de log nivel INFO\"\n}\n{\n    \"@timestamp\": \"2020-05-12 14:08:40,657\",\n    \"appname\": \"teste_log\",\n    \"loglevel\": \"DEBUG\",\n    \"run_id\": \"470e25bc-7e5d-4af8-b71a-2e22d582cc5a\",\n    \"message\": \"Alguma mensagem de log nivel DEBUG\"\n}\n```\n* Obs.: O exemplo desse output em JSON está identado para melhor visualização nesta documentação. O output normal, não é identado, e sim um registro por linha.\n\n\n\n## Tags e campos personalizadas\nÉ possivel o envio de tags e campos personalizadas para o log. Basta passar como argumento nomeado(kwargs) na chamada do log.\n\nTags e campos personalizados são úteis para a ferramenta de log que irá consumir o JSON. Com estes campos é possivel facilitar o parse e consulta destes logs de forma flexivel, como por exemplo, filtrando todos os logs que contem a `tag` 'x' ou 'y'.\n\nExemplo:\n\n```py\n    applog.error('Alguma mensagem de log nivel ERRO', algum_campo_personalizado='algum_valor_util', tags=['erro', 'processamento_x', 'outra_tag'])\n```\n\nOutput:\n```json\n{\n    \"@timestamp\": \"2020-05-12 14:24:35,667\",\n    \"appname\": \"teste_log\",\n    \"loglevel\": \"ERROR\",\n    \"run_id\": \"2f15f1b0-c9d4-48fb-8cbd-7abcda7380dc\",\n    \"algum_campo_personalizado\": \"algum_valor_util\",\n    \"tags\": [\n        \"erro\",\n        \"processamento_x\",\n        \"outra_tag\"\n    ],\n    \"message\": \"Alguma mensagem de log nivel ERRO\"\n}\n```\n* Note o nó algum_campo_personalizado e tags.\n\n\n\n## Logs especiais\nAlguns metodos da classe de log foram criados para situações especiais, para facilitar seu uso e tem outputs com campos extras de informação.\n\n\n### `time_metric`\nLoga o tempo total de uma execução. Adiciona a tag `metrics` no log.\n\n#### params\n    message(required): Texto da mensagem do log\n    func_name(required): Nome da função cronometrada\n    total_time(required): Tempo total de execução\n    **kwargs(optional): campos personalizados\n\nExemplo:\n\n```py\n    applog.time_metric('Executada funcao_x', 'funcao_x', 4)    \n```\n\nOutput:\n```json\n{\n    \"@timestamp\": \"2020-05-12 14:42:48,258\",\n    \"appname\": \"teste_log\",\n    \"loglevel\": \"INFO\",\n    \"run_id\": \"b0d19656-0dbe-4c35-aa4f-d3b1c11b3b44\",\n    \"message\": \"Executada funcao_x\",\n    \"total_time\": 4,\n    \"function_name\": \"funcao_x\",\n    \"tags\": [\n        \"metrics\"\n    ]\n}\n```\n* Obs.: Os `campos personalizados` continuam tendo o mesmo funcionamento.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdouglasmoraisdev%2Fjson_log","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdouglasmoraisdev%2Fjson_log","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdouglasmoraisdev%2Fjson_log/lists"}