Skip to main content

jaylog

Biblioteca de logging para Python com rotação de arquivos e envio HTTP para um endpoint remoto.

Instalação

pip install -U --no-cache-dir jaylog

Variáveis de ambiente

As variáveis usam o prefixo JAYLOG_. Podem ser definidas no ambiente do sistema ou em um arquivo .env / .env.logging na raiz do projeto.

Variável obrigatório? Padrão Descrição
JAYLOG_APP_NAME SIM null Nome do serviço/bot (usado no nome do arquivo de log)
JAYLOG_LOG_DIR SIM null Caminho do diretório onde os arquivos de log serão salvos
JAYLOG_LOG_LEVEL NÃO INFO Nível mínimo de log (DEBUG, INFO, WARNING, ERROR, CRITICAL)
JAYLOG_LOG_MAX_BYTES NÃO 5242880 Tamanho máximo do arquivo de log antes de rotacionar (bytes)
JAYLOG_LOG_BACKUP_COUNT NÃO 5 Quantidade de arquivos de backup mantidos após rotação
JAYLOG_LOG_RETENTION_DAYS NÃO 7 Dias para manter arquivos de log antigos
JAYLOG_LOG_HTTP_TIMEOUT NÃO 5.0 Timeout em segundos para o envio HTTP
JAYLOG_LOG_HTTP_ENDPOINT NÃO null URL do endpoint que receberá os logs
JAYLOG_LOG_HTTP_API_KEY NÃO null Chave de autenticação enviada no header x-api-key
JAYLOG_LOG_HTTP_PROXY NÃO null URL do proxy para o envio HTTP (ex: http:\\user:password@server:port)
JAYLOG_LOG_SCREENSHOT_ENABLED NÃO false Captura screenshot no momento do log (true/false, apenas Windows)

Como usar?

Existem alguns cenários diferentes onde a utilização desse lib pode mudar, abaixo estão os cenários mapeados e como realizar configuração para cada um.

Arquivo único

.env.logging

JAYLOG_APP_NAME=meu-bot
JAYLOG_LOG_DIR=C:\logs

main.py

from jaylog import JaylogSettings, get_logger

logger = get_logger(JaylogSettings())

logger.info("Arquivo Único")

Múltiplos Arquivos

.env.logging

JAYLOG_APP_NAME=meu-bot
JAYLOG_LOG_DIR=C:\logs

main.py

from jaylog import JaylogSettings, get_logger, configure
from parse import parse_csv

jaylog_settings = JaylogSettings()
configure(jaylog_settings)

logger = get_logger()

logger.info("Múltiplos Arquivos - main.py")
parse_csv()

parse.py

from jaylog import get_logger

logger = get_logger()

def parse_csv():
    logger.info("Múltiplos Arquivos - parse.py")

Alterando Caminho padrão do .env

development.env

JAYLOG_APP_NAME=meu-bot
JAYLOG_LOG_DIR=C:\logs

main.py

from jaylog import JaylogSettings, get_logger

settings = JaylogSettings(_env_file='development.env')
logger = get_logger(settings)

logger.info("Alterando Caminho padrão do .env")

Preparando para produção

[!IMPORTANT] HTTP_ENDPOINT e HTTP_API_KEY (opcionais) 📢

  • A configuração HTTP_ENDPOINT e HTTP_API_KEY não precisa ser feita em ambiente local ou de desenvolvimento
  • Se apenas uma das duas variáveis HTTP_ENDPOINT ou HTTP_API_KEYS for definida, o envio HTTP é ignorado.
  • Caso a aplicação execute em um ambiente que usa um proxy ntlm, defina JAYLOG_LOG_HTTP_PROXY

[!TIP] Em produção é recomendado usar um diretório específico para suas secrets, para que você possa reutilizar entre diferentes aplicações.

Cenário 1 (secrets definido hardcode no código):

prodution.env

JAYLOG_APP_NAME=meu-bot
JAYLOG_LOG_DIR=C:\logs
$ pwd
/foo/bar/secrets

$ ls -la
JAYLOG_LOG_HTTP_ENDPOIN
JAYLOG_LOG_HTTP_API_KEY
JAYLOG_LOG_HTTP_PROXY

main.py

from jaylog import JaylogSettings, get_logger

settings = JaylogSettings(
    _env_file='prodution.env',
    _secrets_dir='/foo/bar/secrets/'
)
logger = get_logger(settings)

logger.info("Mensagem de log")

Cenário 2 (secrets definido no .env):

prodution.env

JAYLOG_APP_NAME=meu-bot
JAYLOG_LOG_DIR=C:\logs
JAYLOG_SECRETS_DIR=/foo/bar/secrets

main.py

from jaylog import JaylogSettings, get_logger

# nesse caso é necessário usar a função de classe `reload_secrets`
# pois o diretorio dos secrets foi passado via variável de ambiente
settings = JaylogSettings(_env_file='prodution.env').reload_secrets() 

logger = get_logger(settings)

logger.info("Mensagem de log")

Release files for jaylog 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jaylog 0.2.2
File Size Uploaded
jaylog-0.2.2.tar.gz 7.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jaylog 0.2.2
File Interpreter ABI Platform
jaylog-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 18.7 kB

Release files / jaylog-0.2.2.tar.gz

Download URL jaylog-0.2.2.tar.gz
Size 7.9 kB
Tags Source
SHA-256 checksum
How to use checksums
bc6a8e51ba078bf37b085f4f3125398801889aaa81c9c9bab38ea1dff940d3fe
BLAKE2b-256 checksum
How to use checksums
77b2e8fcc8e4543cb32a16a6e1ec130f480d165ba5398aaf798ea3207c66862b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / jaylog-0.2.2-py3-none-any.whl

Download URL jaylog-0.2.2-py3-none-any.whl
Size 10.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
76fadc2047d2f13c3d54ea22b55f1dfe13da77522ce26f4717f5fdc6b72f2e25
BLAKE2b-256 checksum
How to use checksums
def4ab061e25e390bf99540748d0268cf7781b95b8ecda998fe584da2e50c9b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page