kosh-logger-sdk
v1.0.0
Published
Kosh observability SDK
Downloads
67
Readme
@kosh/logger
SDK de logs centralizado para todos os projetos Kosh. Os logs são enviados para https://ingest.cspfood.com.br/ingest
Instalação
Copie a pasta /logger para a raiz do projeto.
Variáveis de ambiente necessárias
LOG_PROJECT=nome-do-projeto # ex: queja-platform, cspfood, kosh-admin
LOG_INGEST_URL=https://ingest.cspfood.com.br/ingest
LOG_INGEST_TOKEN=<Bitwarden: Kosh VM - Log Ingest Token>Uso básico (qualquer ambiente)
import { initLogger, log } from '~/logger'
initLogger({
project: process.env.LOG_PROJECT!,
ingestUrl: process.env.LOG_INGEST_URL!,
token: process.env.LOG_INGEST_TOKEN!,
env: 'worker',
})
log({
project: 'meu-projeto',
service: 'meu-servico',
level: 'INFO',
event: 'alguma.coisa',
message: 'Descrição do que aconteceu',
})Nuxt 3
- Copie
adapters/nuxt.tsparaplugins/logger.ts - Adicione as variáveis no
nuxt.config.ts(ver comentários no arquivo)
Vue 3 standalone
import { loggerPlugin } from '~/logger/adapters/vue'
app.use(loggerPlugin, { project: '...', ingestUrl: '...', token: '...', env: 'vue' })Cloud Functions Firebase
import { initFirebaseLogger, wrapHttpFunction } from '~/logger/adapters/firebase'
initFirebaseLogger({ project: 'meu-projeto', ingestUrl: '...', token: '...', env: 'firebase-function' })
export const minhaFunction = functions.https.onRequest(
wrapHttpFunction(async (req, res) => {
// sua lógica aqui
}, { service: 'minha-function', event: 'minha.action' })
)Webhook (Stripe, etc)
import { processWebhook } from '~/logger'
await processWebhook({
project: 'meu-projeto',
service: 'stripe-webhook',
source: 'stripe',
headers: req.headers,
body: req.body,
handler: async () => {
// sua lógica aqui
}
})Medir duração de operações
import { measure } from '~/logger'
const resultado = await measure(
() => buscarDadosDaAPI(),
{ project: 'meu-projeto', service: 'api-client', event: 'api.fetch', message: 'Buscando dados' }
)Identificar usuário logado
import { setUser, clearUser } from '~/logger'
// No login
setUser({ id: user.uid, email: user.email, role: user.role })
// No logout
clearUser().NET / C#
Veja as instruções em adapters/dotnet.ts
