Implementar un logger.
- Primero, definir un sistema de niveles que tenga la siguiente prioridad (de menor a mayor):
- debug, http, info, warning, error, fatal
- Después implementar un logger para desarrollo y un logger para producción, el logger de desarrollo deberá loggear a partir del nivel debug, sólo en consola
- Sin embargo, el logger del entorno productivo debería loggear sólo a partir de nivel info.
- Además, el logger deberá enviar en un transporte de archivos a partir del nivel de error en un nombre “errors.log”
- Agregar logs de valor alto en los puntos importantes de tu servidor (errores, advertencias, etc) y modificar los console.log() habituales que tenemos para que muestren todo a partir de winston.
- Crear un endpoint /loggerTest que permita probar todos los logs
A la hora de iniciar el proyecto en producción hay que modificar la api de peticiones de la carpeta src/public/js/utils/api.js
reemplazando el puerto 8080 por el puerto 3000
ADMIN
:
email: admin@gmail.com
password: 123
USUARIO
:
email: user@gmail.com
password: 123
Dentro del proyecto encontrarás la siguiente estructura de directorios:
├── src/
├── config/
│ └── ...
└── controllers/
│ └── ...
└── dao/
└── db/
│ └── ...
└── memory/
│ └── ...
└── models/
│ └── ...
└── mongo/
│ └── ...
└── patterns/
│ └── ...
└── services/
└── repository/
└── ...
│└── lib/
└── error/
└── constants/
│ └── ...
└── handler/
└── ...
│└── middlewares/
│ └── ...
└── public/
│ └── ...
└── routes/
│ └── ...
└── utils/
│ └── ...
└── views/
└── layouts/
│ └── ...
└── partials/
└── ...
src/config
: Archivos de configuraciónsrc/controllers
: Controladores de las rutassrc/dao
: Todo lo relacionado con datos (MEMORY, MONGO)src/dao/memory
: Métodos para guardar los datos en memoria (archivo.json)src/dao/models
: Estructura de los datos de MONGODBsrc/dao/mongo
: Métodos para guardar los datos en una base de datos mongosrc/dao/patterns
: Diseño de los datos de la aplicaciónsrc/dao/services
: Serviciossrc/dao/services/repository
: Selección del dao a utilizar en el proyectosrc/lib
: Librerias compartidassrc/lib/err
: Libreria de custom errorsrc/lib/err/constants
: Todos los códigos e información de distintos erroressrc/lib/err/handler
: Manejador de erroressrc/middlewares
: Funciones de validaciónsrc/public
: Carpeta publica para las vistassrc/routes
: Rutas de la APIsrc/utils
: Archivos que se reutilizarán a lo largo del proyectosrc/views
: Vistas de handlebars para renderizar la interfaz del usuariosrc/views/layouts
: Plantillas de handlebarssrc/views/partials
: Componentes de handlebars
$ npm install # or `pnpm install` or `yarn install`
Hubicarse dentro del siguiente directorio
├── node_modules/
├── standard/
└── ...
En el archivo eslintrc.json
pegar la siguiente configuración
{
"env": {
"browser": true
},
"extends": ["standard", "standard-jsx"],
"rules": {
"camelcase": "off"
}
}
$ npm start # or `pnpm start` or `yarn start`
$ npm start --mode
DEVELOPMENT
: Se conecta a la base de datos de desarrollo y el puerto de ejecución del servidor es el 8080 por defectoPRODUCTION
: Se conecta a la base de datos de producción y el puerto de ejecución del servidor es el 3000 por defecto
Por defecto se usa DEVELOPMENT
$ npm start --port
Por defecto se usa el puerto designado por el modo de desarrollo
$ npm start --persistence
MONGO
: Los datos se almacenan en una base de datos mongoMEMORY
: Los datos se almacenan en un archivo .json
Por defecto se usa MONGO
$ npm build # or `pnpm build` or `yarn build`