Metadata-Version: 2.3
Name: dmt-logger
Version: 0.1.2
Summary: 
Author: Daniel
Author-email: daniel.mtorres7@gmail.com
Requires-Python: >=3.10
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
Description-Content-Type: text/markdown

# Sistema de Log Configurável

Este projeto oferece um sistema de logs altamente configurável, permitindo personalizar diversos aspectos através de variáveis de ambiente definidas em um arquivo `.env`. Você poderá definir o caminho dos logs, o formato de cada entrada, o nível de detalhe e a formatação da data e hora, oferecendo flexibilidade total para suas necessidades.

## Como Utilizar

### 1. Arquivo de Configuração `.env`

A configuração do sistema de logs é feita através do arquivo `.env`. Crie este arquivo na raiz do seu projeto e defina as seguintes variáveis:

*   **DEFAULT_LOG_PATH**: Caminho para o diretório onde os arquivos de log serão armazenados. Este campo suporta formatação de data e hora, conforme descrito na seção "Formatação de Data e Hora".
*   **DEFAULT_LOG_TEMPLATE**: Define o formato de cada linha de log. Utilize as variáveis de formatação disponíveis, conforme detalhado na seção "Formato das Entradas de Log".
*   **DEFAULT_TIME_FORMAT**: Especifica o formato de data e hora a ser utilizado nos logs. Consulte a seção "Formatação de Data e Hora" para opções.
*   **DEFAULT_LOG_LEVEL**: Define o nível mínimo de log a ser gravado. Opções comuns incluem `DEBUG`, `INFO`, `WARNING`, `ERROR` e `CRITICAL`. Logs com nível inferior ao definido serão ignorados.

**Exemplo de arquivo `.env`:**

DEFAULT_LOG_PATH='data/logs/[now %Y]/[now %m.%b]/[now %d.%a]/[now %H]h/log.log'
DEFAULT_LOG_TEMPLATE='%(asctime)s [%(name)s] - %(levelname)s - %(message)s'
DEFAULT_TIME_FORMAT='%H:%M:%S'
DEFAULT_LOG_LEVEL='INFO'


### 2. Formatação de Data e Hora

O sistema permite a formatação dinâmica de datas e horas no `DEFAULT_LOG_PATH` e dentro do `DEFAULT_LOG_TEMPLATE`, utilizando *placeholders* no formato `[now FORMATO]`.

**Opções de Formatação:**

*   **[now]**: Data e hora atual.
*   **%a**: Nome abreviado do dia da semana (ex: Dom, Seg, Ter).
*   **%A**: Nome completo do dia da semana (ex: Domingo, Segunda-feira).
*   **%w**: Dia da semana como número (0 = Domingo, 6 = Sábado).
*   **%d**: Dia do mês (01 a 31).
*   **%-d**: Dia do mês (1 a 31).
*   **%b**: Nome abreviado do mês (ex: Jan, Fev, Mar).
*   **%B**: Nome completo do mês (ex: Janeiro, Fevereiro, Março).
*   **%m**: Mês como número (01 a 12).
*   **%-m**: Mês como número (1 a 12).
*   **%y**: Ano sem século (00 a 99).
*   **%-y**: Ano sem século (0 a 99).
*   **%Y**: Ano com século (ex: 2024).
*   **%H**: Hora (00 a 23).
*   **%-H**: Hora (0 a 23).
*   **%I**: Hora em formato 12 horas (01 a 12).
*   **%-I**: Hora em formato 12 horas (1 a 12).
*   **%p**: AM ou PM.
*   **%x**: Data no formato local.
*   **%c**: Data e hora no formato local.

**Exemplos:**

*   `[now %d.%a]` = `01.Seg`
*   `[now %d]` = `01`
*   `[now %-d]` = `1`
*   `[now %m]` = `01`
*   `[now %b]` = `Jan`
*   `[now %B]` = `Janeiro`
*   `[now %m.%b]` = `01.Jan`
*   `[now %y]` = `24`
*   `[now %Y]` = `2024`
*   `[now %d de %B de %Y]` = `01 de Janeiro de 2024`

### 3. Formato das Entradas de Log

A variável `DEFAULT_LOG_TEMPLATE` permite personalizar o formato de cada linha de log. Utilize as seguintes variáveis dentro do template:

*   `%(asctime)s`: Data e hora da ocorrência do log.
*   `%(name)s`: Nome do logger.
*   `%(levelname)s`: Nível do log (ex: DEBUG, INFO, ERROR).
*   `%(message)s`: Mensagem de log.

**Exemplo:**

`DEFAULT_LOG_TEMPLATE='%(asctime)s [%(name)s] - %(levelname)s - %(message)s'`

### 4. Criação do Caminho do Log

Ao definir o `DEFAULT_LOG_PATH`, certifique-se de que o caminho seja válido e não contenha caracteres especiais (espaços, barras, etc.). O sistema substituirá automaticamente espaços por underscores (`_`).

**Exemplo:**

data/logs/[now %Y]/[now %m.%b]/[now %d.%a]/[now %H]h/log.log


resultaria em um caminho como:

data/logs/2024/01.Jan/01.Seg/10h/log.log


Lembre-se de que o sistema criará os diretórios automaticamente, caso eles não existam. Se o caminho definido for inválido, o sistema poderá apresentar erros.

Este guia detalhado oferece uma visão completa das opções de configuração do sistema de logs, permitindo que você personalize-o de acordo com suas necessidades.
