next-logs
Version:
lightning fast, local server and client side logger for NextJS, NodeJS and JS Applications and Servers
134 lines (102 loc) • 3.97 kB
Markdown
# next-logs
> lightning fast, local server and client side logger for NextJS, NodeJS and JS Applications and Servers.
[](https://www.npmjs.com/package/next-logs) [](https://standardjs.com)
## Install
```bash
npm install --save next-logs
```
Or
```bash
yarn add next-logs
```
### Logs are written under `/tmp/` in the project directory:

## Usage - Logging
### 1. Add API in `/pages/api/logger/[log].js`
```jsx
// /pages/api/logger/[log].js
import NextLogs from "next-logs";
export default NextLogs();
```
### 2. Client Side
The client side API uses API routes hence it works in both: client and server side.
```jsx
// /pages/*.js
import log from "next-logs/react";
export default Page() {
useEffect(() => {
log.info("Created our super logger!", {
name: "next-logs"
});
log.debug("Created our super logger!", {
name: "next-logs"
});
log.warn("Created our super logger!", {
name: "next-logs"
});
log.error("Created our super logger!", {
name: "next-logs"
});
},[]);
return (
<div />
)
};
```
### 3. Server Side
Next logs ships with a server side API that makes logging more efficient.
```jsx
// /pages/api/auth.js || /middleware.js
import logger from "next-logs/node";
async function handler(req, res) {
const { method } = req;
logger.info("Deleting user with attributes:", {
id: '1'
});
logger.debug("Deleting user with attributes:", {
id: '1'
});
logger.warn("Deleting user with attributes:", {
id: '1'
});
logger.error("Deleting user with attributes:", {
id: '1'
});
try {
switch (method) {
case 'DELETE':
// delete user
break;
default:
res.setHeader('Allow', ['DELETE']);
res.status(405).end(`Method ${method} Not Allowed`);
}
// send result
return res.status(200).json({});
} catch (error) {
return res.status(500).json(error);
}
}
```
## Monitoring & Debugging
You can view logs by type through your `domain/api/logger/{type}`. Type of logs include `info`, `debug`, `warn` and `error`.
You can also build your own log viewers through the same API that returns log text. A next-logs logs dashboard is currently in development.
## Logs directory/location
By default, logs are saved in the `/tmp` directory. Because Vercel and most systems allow saving files under `/tmp` directory; hence prevents conflicts that may lead to failures.
This configuration can be edited using the `LOGGER_DIR` environment variable:
##### logs will be saved in the `./logs` directory
```
LOGGER_DIR=logs
```
When self-hosting a NextJS project, it is advised to change the logs location from the default `'tmp'` for better control of logs.
## NextJS Middleware
While using nextJS middleware in API routes, make sure that your middleware does not block requests at `/api/logger/` routes. This may lead to errors and malfunctioning while using `next-logs`.
## logger (server) and log (client) API
| Methods | Explanation |
| ------------------ | :---------------------------------------------------------------------------------------------------: |
| info | logs the information your program is working as expected. |
| debug | used to find the reason in case your program is not working as expected or an exception has occurred. |
| warn | situations that are unexpected, but the code can continue the work |
| error | Error/failure logs |
## License
MIT © [BossBele](https://github.com/BossBele)