驴Qu茅 son los logs?
Los logs en programaci贸n son registros detallados de eventos y acciones dentro de un sistema de software. Funcionan como un historial de actividad que permite a los desarrolladores rastrear y comprender lo que sucede en una aplicaci贸n. Estos registros contienen informaci贸n valiosa, como mensajes de error, advertencias, solicitudes de usuarios y resultados de procesos. Los logs son esenciales para la depuraci贸n, el monitoreo y la mejora continua de aplicaciones. Facilitan la identificaci贸n de problemas y la resoluci贸n eficiente de errores al proporcionar pistas sobre c贸mo se comporta una aplicaci贸n en diferentes situaciones. Adem谩s, los logs son una herramienta valiosa para el an谩lisis de rendimiento y la optimizaci贸n del software. Interpretar adecuadamente los logs permite a los desarrolladores tomar decisiones informadas para garantizar la fiabilidad y eficacia de sus sistemas.
驴C贸mo capturar logs de una aplicaci贸n de vercel con axiom?
Los los son una parte importante del desarrollo de un proyecto, nos permiten determinar que partes del mismo est谩n produciendo errores para poder corregirlos. Para este caso vamos a utilizar axiom que es un servicio de logs en la nube que se puede integrar f谩cilmente con vercel.
- Creamos una cuenta en [axiom.co][https://axiom.co/] si es que no tenemos una.
- Una ves creada una cuenta nos pedir谩 crear una organizaci贸n.
- Abre vercel y busca dentro de Integrations > Axiom.
- Asocia axiom a tu perfil y selecciona el proyecto sobre el cual estar谩 montado.
Actualizaci贸n de la base de datos
Para empezar a recibir los primeros datos, se requiere tener un modelo inicial en Prisma. Para ello vamos a actualizar nuestro schema.
-
Abrimos el archivo prisma/schema.prisma.
-
Eliminamos el modelo Example y agregamos uno nuevo llamado Post.
model Post { id String @id @default(cuid()) createdAt DateTime @default(now()) content String @db.VarChar(255) authorId String @@index([authorId]) }
-
Sincronizamos el esquema de prisma.
pnpm prisma db push
Esto generar谩 los cambios necesarios en la base de datos.
-
Eliminamos el router src/server/api/routers/example.ts y creamos otro llamado posts.ts.
import { createTRPCRouter, publicProcedure } from '~/server/api/trpc' export const postsRouter = createTRPCRouter({ getAll: publicProcedure.query(({ ctx }) => { return ctx.prisma.post.findMany() }), })
-
Actualizamos la lista de routers en src/server/api/root.ts.
import { createTRPCRouter } from '~/server/api/trpc' import { postsRouter } from './routers/post' export const appRouter = createTRPCRouter({ posts: postsRouter, }) export type AppRouter = typeof appRouter
-
Abrimos prisma studio para agregar un par de registros.
pnpm prisma studio
-
Despu茅s de agregar un par de registros, actualiza el home para que muestre los resultados.
import { SignIn, SignOutButton, useUser } from '@clerk/nextjs' import Head from 'next/head' import { api } from '~/utils/api' export default function Home() { const { data } = api.posts.getAll.useQuery() const { user, isSignedIn } = useUser() return ( <> ... <main className="flex min-h-screen flex-col items-center justify-center bg-gradient-to-b from-[#2e026d] to-[#15162c]"> <div className="text-2xl text-white"> {isSignedIn ? <SignOutButton /> : <SignIn />} </div> <div> {data?.map((post) => ( <div key={`post-${post.id}`}>{post.content}</div> ))} </div> </main> </> ) }
En esta lecci贸n pudimos integrar un sistema de logs utilizando Axiom, esta soluci贸n nos ha permitido implementar logs directamente desde Vercel, sin la necesidad de tener que realizar ning煤n tipo de configuraci贸n adicional a nuestro proyecto.