Collect, Store, and Visualize Logs with a Single Module
Errsole is an open-source logger for Node.js. It has a built-in web dashboard to view, filter, and search your app logs.
https://github.com/errsole/errsole.js/assets/3775513/b59424fa-c3b3-4a65-b603-e35499fe4263
Features
Minimal Setup
Just include the Errsole package in your code—no need for dedicated servers, software installations, or complicated configurations.
Logger++
Errsole automatically collects all logs from the Node.js console. Additionally, it provides a custom logger with multiple log levels and allows you to include metadata with your logs for better context. Read More
Store Anywhere
Store your logs wherever you want—whether in a file or any database of your choice. You can also configure log rotation to specify how long logs should be retained.
Web Dashboard
View, filter, and search through your logs using the built-in Web Dashboard. Secure authentication and team management features ensure that only you and your team can access the logs.
Critical Error Notifications
Get immediate notifications when your app crashes or encounters critical errors. The notification includes the error message, the app name, the environment, the server name, and a direct link to view the error in your logs.
AI Copilot (Upcoming)
Errsole's AI Copilot analyzes your error logs, pinpoints the exact location in the code where the error occurred, explains the cause of the error, and suggests a fix.
Benchmarks
A Node.js app using Errsole Logger can handle 90,000 more requests per minute than when using Elasticsearch and 70,000 more requests per minute than when using Amazon CloudWatch. Read More
Setup
Web Dashboard Access
After completing the setup, you can access the Errsole Web Dashboard through the following methods:
- Local Environment: Open your web browser and visit
http://localhost:8001/
. - Remote Server: If you have deployed Errsole on a remote server, use the server's IP address or domain name followed by the port number (e.g., YourServerIP:8001 or YourDomain:8001).
Note
If you initialized Errsole with a different port or specified a custom path, adjust the URL as follows:
- Replace 8001 with your chosen port number.
- Append your custom path to the end of the URL.
http(s)://YourServerIP:CustomPort/YourCustomPath
Proxy Middleware Configuration
If you encounter issues accessing port 8001 due to firewall restrictions, or if you prefer to host the Errsole Web Dashboard on your primary domain/port, you can configure the Errsole Proxy Middleware in your app. Here is a step-by-step guide: Proxy Middleware Configuration
Custom Logging Functions
log / info
The log function is used to log messages or information. It can accept one or more arguments, which can be strings, numbers, JavaScript objects, or Error objects.
Example
errsole.log('Logging a message');
errsole.log('Multiple', 'arguments', 'are supported');
errsole.log('Logging with a variable:', var1);
errsole.log(new Error('An error occurred'));
errsole.log('Logging with an error object:', errorObject);
alert
The alert function logs a message and sends a notification to configured channels, such as Email or Slack. It accepts the same types of arguments as the log function.
Example
errsole.alert('Alert! Something critical happened');
error
The error function is specifically designed to log errors. It accepts the same types of arguments as the log function.
Example
errsole.error(new Error('An error occurred'));
warn
The warn function is used to log warning messages. It accepts the same types of arguments as the log function.
Example
errsole.warn('This is a warning message');
debug
The debug function logs debug information, typically used for troubleshooting during development. It accepts the same types of arguments as the log function.
Example
errsole.debug('Debugging information');
meta
In Errsole's custom logger, you can include metadata with your logs. This metadata can be any contextual information, such as HTTP requests or database query results. In the Errsole Web Dashboard, you can view this metadata in a clean JSON viewer without cluttering the log messages.
To include metadata in your logs, use the meta
function followed by the appropriate logging function (error, log, etc.).
Example
errsole.meta({ reqBody: req.body, queryResults: results }).error(err);
errsole.meta({ email: req.body.email }).log('User logged in');
Note
The meta
function must be the first function in the chain, followed by the desired logging function.
Useful Links
-
FAQs
-
Encountering issues? Open an issue on our GitHub repository.
-
Have questions? Use our Q&A forum.
-
Want to request a feature or share your ideas? Use our discussion forum.
-
Want to contribute? First, share your idea with the community in our discussion forum to see what others are saying. Then, fork the repository, make your changes, and submit a pull request.
License
MIT