criado eLog
This commit is contained in:
parent
7e06927ca6
commit
5bfc913d65
8 changed files with 326 additions and 3 deletions
90
dist-back/eLog.js
Normal file
90
dist-back/eLog.js
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
"use strict";
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __export = (target, all) => {
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __copyProps = (to, from, except, desc) => {
|
||||
if (from && typeof from === "object" || typeof from === "function") {
|
||||
for (let key of __getOwnPropNames(from))
|
||||
if (!__hasOwnProp.call(to, key) && key !== except)
|
||||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
||||
}
|
||||
return to;
|
||||
};
|
||||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
||||
var eLog_exports = {};
|
||||
__export(eLog_exports, {
|
||||
NivelLog: () => NivelLog,
|
||||
NivelLogDetalhes: () => NivelLogDetalhes,
|
||||
iniciarELog: () => iniciarELog
|
||||
});
|
||||
module.exports = __toCommonJS(eLog_exports);
|
||||
var NivelLog = /* @__PURE__ */ ((NivelLog2) => {
|
||||
NivelLog2["RASTREAMENTO"] = "RASTREAMENTO";
|
||||
NivelLog2["DEPURACAO"] = "DEPURACAO";
|
||||
NivelLog2["INFORMACAO"] = "INFORMACAO";
|
||||
NivelLog2["AVISO"] = "AVISO";
|
||||
NivelLog2["ERRO"] = "ERRO";
|
||||
NivelLog2["CRITICO"] = "CRITICO";
|
||||
return NivelLog2;
|
||||
})(NivelLog || {});
|
||||
const NivelLogDetalhes = {
|
||||
["RASTREAMENTO" /* RASTREAMENTO */]: { peso: 1, rotulo: "Rastreamento", emoji: "\u{1F50D}", metodo: "debug" },
|
||||
["DEPURACAO" /* DEPURACAO */]: { peso: 2, rotulo: "Depura\xE7\xE3o", emoji: "\u{1F41B}", metodo: "debug" },
|
||||
["INFORMACAO" /* INFORMACAO */]: { peso: 3, rotulo: "Informa\xE7\xE3o", emoji: "\u2139\uFE0F", metodo: "info" },
|
||||
["AVISO" /* AVISO */]: { peso: 4, rotulo: "Aviso", emoji: "\u26A0\uFE0F", metodo: "warn" },
|
||||
["ERRO" /* ERRO */]: { peso: 5, rotulo: "Erro", emoji: "\u274C", metodo: "error" },
|
||||
["CRITICO" /* CRITICO */]: { peso: 6, rotulo: "Cr\xEDtico", emoji: "\u{1F525}", metodo: "error" }
|
||||
};
|
||||
const iniciarELog = (opcoes) => {
|
||||
const nivel = opcoes.nivelMinimo ?? "INFORMACAO" /* INFORMACAO */;
|
||||
const pesoMinimo = NivelLogDetalhes[nivel].peso;
|
||||
const emitir = (nivelLog, pr) => {
|
||||
const config = NivelLogDetalhes[nivelLog];
|
||||
if (config.peso < pesoMinimo) return;
|
||||
const entrada = {
|
||||
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
||||
nivel: nivelLog,
|
||||
app: opcoes.app,
|
||||
origem: pr.origem,
|
||||
mensagem: pr.mensagem,
|
||||
...pr.dados !== void 0 ? { dados: pr.dados } : {}
|
||||
};
|
||||
console[config.metodo](
|
||||
`${config.emoji} [${config.rotulo}] [${opcoes.app}] [${pr.origem}] ${pr.mensagem}`,
|
||||
pr.dados !== void 0 ? pr.dados : ""
|
||||
);
|
||||
if (opcoes.arquivamento) {
|
||||
opcoes.arquivamento(entrada, { app: opcoes.app, nivelMinimo: nivel });
|
||||
}
|
||||
};
|
||||
return {
|
||||
rastreamento: (pr) => emitir("RASTREAMENTO" /* RASTREAMENTO */, pr),
|
||||
depuracao: (pr) => emitir("DEPURACAO" /* DEPURACAO */, pr),
|
||||
info: (pr) => emitir("INFORMACAO" /* INFORMACAO */, pr),
|
||||
aviso: (pr) => emitir("AVISO" /* AVISO */, pr),
|
||||
erro: (pr) => emitir("ERRO" /* ERRO */, pr),
|
||||
critico: (pr) => emitir("CRITICO" /* CRITICO */, pr)
|
||||
};
|
||||
};
|
||||
const log = iniciarELog({
|
||||
app: "testando",
|
||||
nivelMinimo: "INFORMACAO" /* INFORMACAO */,
|
||||
arquivamento: (entrada, opcoes) => {
|
||||
fetch("https://localhost:3334/debug/log", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({ ...entrada, _opcoes: opcoes })
|
||||
});
|
||||
}
|
||||
});
|
||||
log.aviso({ origem: "teste", mensagem: "teste" });
|
||||
// Annotate the CommonJS export names for ESM import in node:
|
||||
0 && (module.exports = {
|
||||
NivelLog,
|
||||
NivelLogDetalhes,
|
||||
iniciarELog
|
||||
});
|
||||
|
|
@ -22,6 +22,7 @@ __reExport(index_exports, require("./constantes"), module.exports);
|
|||
__reExport(index_exports, require("./consulta"), module.exports);
|
||||
__reExport(index_exports, require("./dayjs26"), module.exports);
|
||||
__reExport(index_exports, require("./ecosistema"), module.exports);
|
||||
__reExport(index_exports, require("./eLog"), module.exports);
|
||||
__reExport(index_exports, require("./extensoes"), module.exports);
|
||||
__reExport(index_exports, require("./extensoes"), module.exports);
|
||||
__reExport(index_exports, require("./filtroDelta"), module.exports);
|
||||
|
|
@ -48,6 +49,7 @@ __reExport(index_exports, require("./zodCustomizados"), module.exports);
|
|||
...require("./consulta"),
|
||||
...require("./dayjs26"),
|
||||
...require("./ecosistema"),
|
||||
...require("./eLog"),
|
||||
...require("./extensoes"),
|
||||
...require("./extensoes"),
|
||||
...require("./filtroDelta"),
|
||||
|
|
|
|||
|
|
@ -204,6 +204,101 @@ declare const defineDayjsBr: ({ dayjs, duration, isSameOrAfter, isSameOrBefore,
|
|||
|
||||
declare const link_paiol = "https://paiol.idz.one";
|
||||
|
||||
/** Níveis de severidade para o sistema de log estruturado. */
|
||||
declare enum NivelLog {
|
||||
/** O mais baixo nível, ideal para rastreamento detalhado de fluxo e execução. */
|
||||
RASTREAMENTO = "RASTREAMENTO",
|
||||
/** Usado para informações que ajudam a entender o estado do sistema durante a execução. */
|
||||
DEPURACAO = "DEPURACAO",
|
||||
/** Informações gerais e eventos do sistema. */
|
||||
INFORMACAO = "INFORMACAO",
|
||||
/** Eventos inesperados, mas que não impedem o funcionamento do sistema. */
|
||||
AVISO = "AVISO",
|
||||
/** Erros que impactam o funcionamento do sistema, mas que podem ser recuperados. */
|
||||
ERRO = "ERRO",
|
||||
/** O nível mais alto de severidade, indicando falhas que requerem atenção imediata. */
|
||||
CRITICO = "CRITICO"
|
||||
}
|
||||
type DetalheNivel = {
|
||||
peso: number;
|
||||
rotulo: string;
|
||||
emoji: string;
|
||||
metodo: "debug" | "info" | "warn" | "error";
|
||||
};
|
||||
/** Detalhes de cada nível de log — peso para filtragem, emoji e método do console. */
|
||||
declare const NivelLogDetalhes: Record<NivelLog, DetalheNivel>;
|
||||
/** Estrutura de uma entrada de log emitida pelo sistema. */
|
||||
type EntradaLog = {
|
||||
timestamp: string;
|
||||
nivel: keyof typeof NivelLog;
|
||||
/** Identificador da aplicação/instância (ex: "front:e-licencie:12345"). */
|
||||
app: string;
|
||||
/** Local no código de onde o log foi emitido (ex: "criarUsuario()"). */
|
||||
origem: string;
|
||||
mensagem: string;
|
||||
dados?: unknown;
|
||||
};
|
||||
/** Interface pública do logger retornado por `iniciarELog`. */
|
||||
type ELogger = {
|
||||
rastreamento: (pr: {
|
||||
origem: string;
|
||||
mensagem: string;
|
||||
dados?: unknown;
|
||||
}) => void;
|
||||
depuracao: (pr: {
|
||||
origem: string;
|
||||
mensagem: string;
|
||||
dados?: unknown;
|
||||
}) => void;
|
||||
info: (pr: {
|
||||
origem: string;
|
||||
mensagem: string;
|
||||
dados?: unknown;
|
||||
}) => void;
|
||||
aviso: (pr: {
|
||||
origem: string;
|
||||
mensagem: string;
|
||||
dados?: unknown;
|
||||
}) => void;
|
||||
erro: (pr: {
|
||||
origem: string;
|
||||
mensagem: string;
|
||||
dados?: unknown;
|
||||
}) => void;
|
||||
critico: (pr: {
|
||||
origem: string;
|
||||
mensagem: string;
|
||||
dados?: unknown;
|
||||
}) => void;
|
||||
};
|
||||
/** Opções de configuração do logger, disponíveis no callback de arquivamento. */
|
||||
type OpoesELogger = {
|
||||
app: string;
|
||||
nivelMinimo: keyof typeof NivelLog;
|
||||
};
|
||||
/** Tipo do callback de arquivamento de logs. */
|
||||
type ArquivamentoLog = (entrada: EntradaLog, opcoes: OpoesELogger) => void;
|
||||
/**
|
||||
* Inicializa o sistema de log estruturado.
|
||||
*
|
||||
* @param opcoes.app - Identificador da aplicação/instância (ex: `"front:e-licencie:12345"`)
|
||||
* @param opcoes.nivelMinimo - Nível mínimo para exibição no console (padrão: INFORMACAO)
|
||||
* @param opcoes.arquivamento - Callback opcional para persistir/enviar as entradas de log
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* const log = iniciarELog({ app: "front:e-licencie:12345" })
|
||||
*
|
||||
* log.info({ origem: "criarUsuario()", mensagem: "Usuário criado", dados: { id: "abc-123" } })
|
||||
* // → ℹ️ [Informação] [front:e-licencie:12345] [criarUsuario()] Usuário criado
|
||||
* ```
|
||||
*/
|
||||
declare const iniciarELog: (opcoes: {
|
||||
app: string;
|
||||
nivelMinimo?: keyof typeof NivelLog;
|
||||
arquivamento?: ArquivamentoLog;
|
||||
}) => ELogger;
|
||||
|
||||
type tiposArquivo = "imagem" | "documento" | "vídeo" | "outros";
|
||||
declare const extensoes: {
|
||||
ext: string;
|
||||
|
|
@ -597,4 +692,4 @@ declare const zNumero: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>;
|
|||
declare const zNumeroPositivo: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>;
|
||||
declare const zNumeroInteiro: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>;
|
||||
|
||||
export { Produtos, TipagemRotas, type TipoPayloadAuditoria, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, criarFiltroDelta, defineDayjsBr, erUuid, esperar, extensoes, iniciarDayjsBr, iniciarFiltroDelta, type interfaceConsulta, link_paiol, localValor, nomeVariavel, objetoPg, operadorFiltroDeltaDetalhes, operadores, paraObjetoRegistroPg, pgObjeto, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoColunaFiltroDelta, type tipoCondicaoFiltroDelta, type tipoCondicaoFiltroDeltaTipado, type tipoFiltro, type tipoFiltroDelta, type tipoFiltroDeltaColunaTipada, type tipoOperadorFiltroDelta, tipoUsuarioResiduos, tiposSituacoesElicencie, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zColunaFiltroDelta, zCondicaoFiltroDelta, zCoordenadas, zDocCnpj, zDocCpf, zDocumento, zFiltro, zFiltroDelta, zNumero, zNumeroInteiro, zNumeroPositivo, zOperadorFiltroDelta, zOperadores };
|
||||
export { type ArquivamentoLog, type ELogger, type EntradaLog, NivelLog, NivelLogDetalhes, type OpoesELogger, Produtos, TipagemRotas, type TipoPayloadAuditoria, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, criarFiltroDelta, defineDayjsBr, erUuid, esperar, extensoes, iniciarDayjsBr, iniciarELog, iniciarFiltroDelta, type interfaceConsulta, link_paiol, localValor, nomeVariavel, objetoPg, operadorFiltroDeltaDetalhes, operadores, paraObjetoRegistroPg, pgObjeto, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoColunaFiltroDelta, type tipoCondicaoFiltroDelta, type tipoCondicaoFiltroDeltaTipado, type tipoFiltro, type tipoFiltroDelta, type tipoFiltroDeltaColunaTipada, type tipoOperadorFiltroDelta, tipoUsuarioResiduos, tiposSituacoesElicencie, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM, zColunaFiltroDelta, zCondicaoFiltroDelta, zCoordenadas, zDocCnpj, zDocCpf, zDocumento, zFiltro, zFiltroDelta, zNumero, zNumeroInteiro, zNumeroPositivo, zOperadorFiltroDelta, zOperadores };
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "p-comuns",
|
||||
"version": "0.348.0",
|
||||
"version": "0.349.0",
|
||||
"description": "",
|
||||
"main": "./dist-front/index.mjs",
|
||||
"module": "./dist-front/index.mjs",
|
||||
|
|
|
|||
BIN
pacote.tgz
BIN
pacote.tgz
Binary file not shown.
135
src/eLog.ts
Normal file
135
src/eLog.ts
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
/** Níveis de severidade para o sistema de log estruturado. */
|
||||
export enum NivelLog {
|
||||
/** O mais baixo nível, ideal para rastreamento detalhado de fluxo e execução. */
|
||||
RASTREAMENTO = "RASTREAMENTO",
|
||||
/** Usado para informações que ajudam a entender o estado do sistema durante a execução. */
|
||||
DEPURACAO = "DEPURACAO",
|
||||
/** Informações gerais e eventos do sistema. */
|
||||
INFORMACAO = "INFORMACAO",
|
||||
/** Eventos inesperados, mas que não impedem o funcionamento do sistema. */
|
||||
AVISO = "AVISO",
|
||||
/** Erros que impactam o funcionamento do sistema, mas que podem ser recuperados. */
|
||||
ERRO = "ERRO",
|
||||
/** O nível mais alto de severidade, indicando falhas que requerem atenção imediata. */
|
||||
CRITICO = "CRITICO",
|
||||
}
|
||||
|
||||
type DetalheNivel = {
|
||||
peso: number
|
||||
rotulo: string
|
||||
emoji: string
|
||||
metodo: "debug" | "info" | "warn" | "error"
|
||||
}
|
||||
|
||||
/** Detalhes de cada nível de log — peso para filtragem, emoji e método do console. */
|
||||
export const NivelLogDetalhes: Record<NivelLog, DetalheNivel> = {
|
||||
[NivelLog.RASTREAMENTO]: { peso: 1, rotulo: "Rastreamento", emoji: "🔍", metodo: "debug" },
|
||||
[NivelLog.DEPURACAO]: { peso: 2, rotulo: "Depuração", emoji: "🐛", metodo: "debug" },
|
||||
[NivelLog.INFORMACAO]: { peso: 3, rotulo: "Informação", emoji: "ℹ️", metodo: "info" },
|
||||
[NivelLog.AVISO]: { peso: 4, rotulo: "Aviso", emoji: "⚠️", metodo: "warn" },
|
||||
[NivelLog.ERRO]: { peso: 5, rotulo: "Erro", emoji: "❌", metodo: "error" },
|
||||
[NivelLog.CRITICO]: { peso: 6, rotulo: "Crítico", emoji: "🔥", metodo: "error" },
|
||||
}
|
||||
|
||||
/** Estrutura de uma entrada de log emitida pelo sistema. */
|
||||
export type EntradaLog = {
|
||||
timestamp: string
|
||||
nivel: keyof typeof NivelLog
|
||||
/** Identificador da aplicação/instância (ex: "front:e-licencie:12345"). */
|
||||
app: string
|
||||
/** Local no código de onde o log foi emitido (ex: "criarUsuario()"). */
|
||||
origem: string
|
||||
mensagem: string
|
||||
dados?: unknown
|
||||
}
|
||||
|
||||
/** Interface pública do logger retornado por `iniciarELog`. */
|
||||
export type ELogger = {
|
||||
rastreamento: (pr: { origem: string; mensagem: string; dados?: unknown }) => void
|
||||
depuracao: (pr: { origem: string; mensagem: string; dados?: unknown }) => void
|
||||
info: (pr: { origem: string; mensagem: string; dados?: unknown }) => void
|
||||
aviso: (pr: { origem: string; mensagem: string; dados?: unknown }) => void
|
||||
erro: (pr: { origem: string; mensagem: string; dados?: unknown }) => void
|
||||
critico: (pr: { origem: string; mensagem: string; dados?: unknown }) => void
|
||||
}
|
||||
|
||||
/** Opções de configuração do logger, disponíveis no callback de arquivamento. */
|
||||
export type OpoesELogger = {
|
||||
app: string
|
||||
nivelMinimo: keyof typeof NivelLog
|
||||
}
|
||||
|
||||
/** Tipo do callback de arquivamento de logs. */
|
||||
export type ArquivamentoLog = (entrada: EntradaLog, opcoes: OpoesELogger) => void
|
||||
|
||||
/**
|
||||
* Inicializa o sistema de log estruturado.
|
||||
*
|
||||
* @param opcoes.app - Identificador da aplicação/instância (ex: `"front:e-licencie:12345"`)
|
||||
* @param opcoes.nivelMinimo - Nível mínimo para exibição no console (padrão: INFORMACAO)
|
||||
* @param opcoes.arquivamento - Callback opcional para persistir/enviar as entradas de log
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* const log = iniciarELog({ app: "front:e-licencie:12345" })
|
||||
*
|
||||
* log.info({ origem: "criarUsuario()", mensagem: "Usuário criado", dados: { id: "abc-123" } })
|
||||
* // → ℹ️ [Informação] [front:e-licencie:12345] [criarUsuario()] Usuário criado
|
||||
* ```
|
||||
*/
|
||||
export const iniciarELog = (opcoes: {
|
||||
app: string
|
||||
nivelMinimo?: keyof typeof NivelLog
|
||||
arquivamento?: ArquivamentoLog
|
||||
}): ELogger => {
|
||||
const nivel: keyof typeof NivelLog = opcoes.nivelMinimo ?? NivelLog.INFORMACAO
|
||||
const pesoMinimo = NivelLogDetalhes[nivel].peso
|
||||
|
||||
const emitir = (
|
||||
nivelLog: keyof typeof NivelLog,
|
||||
pr: { origem: string; mensagem: string; dados?: unknown },
|
||||
) => {
|
||||
const config = NivelLogDetalhes[nivelLog]
|
||||
if (config.peso < pesoMinimo) return
|
||||
|
||||
const entrada: EntradaLog = {
|
||||
timestamp: new Date().toISOString(),
|
||||
nivel: nivelLog,
|
||||
app: opcoes.app,
|
||||
origem: pr.origem,
|
||||
mensagem: pr.mensagem,
|
||||
...(pr.dados !== undefined ? { dados: pr.dados } : {}),
|
||||
}
|
||||
|
||||
console[config.metodo](
|
||||
`${config.emoji} [${config.rotulo}] [${opcoes.app}] [${pr.origem}] ${pr.mensagem}`,
|
||||
pr.dados !== undefined ? pr.dados : "",
|
||||
)
|
||||
|
||||
if (opcoes.arquivamento) {
|
||||
opcoes.arquivamento(entrada, { app: opcoes.app, nivelMinimo: nivel })
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
rastreamento: (pr) => emitir(NivelLog.RASTREAMENTO, pr),
|
||||
depuracao: (pr) => emitir(NivelLog.DEPURACAO, pr),
|
||||
info: (pr) => emitir(NivelLog.INFORMACAO, pr),
|
||||
aviso: (pr) => emitir(NivelLog.AVISO, pr),
|
||||
erro: (pr) => emitir(NivelLog.ERRO, pr),
|
||||
critico: (pr) => emitir(NivelLog.CRITICO, pr),
|
||||
}
|
||||
}
|
||||
|
||||
const log = iniciarELog({
|
||||
app: "testando",
|
||||
nivelMinimo: NivelLog.INFORMACAO,
|
||||
arquivamento: (entrada, opcoes) => {
|
||||
fetch("https://localhost:3334/debug/log", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({ ...entrada, _opcoes: opcoes }),
|
||||
})
|
||||
},
|
||||
})
|
||||
|
||||
log.aviso({ origem: "teste", mensagem: "teste" })
|
||||
|
|
@ -5,6 +5,7 @@ export * from "./constantes"
|
|||
export * from "./consulta"
|
||||
export * from "./dayjs26"
|
||||
export * from "./ecosistema"
|
||||
export * from "./eLog"
|
||||
export * from "./extensoes"
|
||||
export * from "./extensoes"
|
||||
export * from "./filtroDelta"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue