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)
| File | Size | Uploaded | |
|---|---|---|---|
| jaylog-0.2.2.tar.gz | 7.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|