Guide to Winston MongoDB: Distributing logs across multiple collections rather than aggregating them all into one collection

Is it possible to configure winston-mongodb to log to multiple collections simultaneously?

var winston = require('winston');
require('winston-mongodb').MongoDB;


var logger = new winston.Logger({
  level: 'info',
  transports: [
    new(winston.transports.MongoDB)({
            db : 'mongodb://xxxx'
        })
  ],
  capped : true,  // defaults to false
})

The current setup logs everything to a default collection named log, but I am looking for a way to create separate collections for each module. This will help me pinpoint and investigate issues specific to different domains more effectively.

Answer №1

Effortless and efficient, the ability to direct logs to multiple collections is a breeze:

winston.loggers.add('errorLog',{
    transports : [
        new(winston.transports.MongoDB)({
            db : 'mongodb://yyyyy',
            collection : 'errorCollection',
            level : 'error',
            capped : true
        }),
    ]
});

var errorLog = winston.loggers.get('errorLog')
errorLog.error('An unexpected error occurred') 


winston.loggers.add('accessLog',{
    transports : [
        new(winston.transports.MongoDB)({
            db : 'mongodb://yyyyy',
            collection : 'accessCollection',
            level : 'info',
            capped : true
        }),
    ]
});

var accessLog = winston.loggers.get('accessLog')
accessLog.info('User accessed account successfully')

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

What causes Vue to only update once when there are two closely timed mutations to reactive data?

Can you take a look at this simple example? export default { data() { return { name: "Amy", age: 18, }; }, computed: { combinedDataForWatching() { return { name: this.name, age: this.age, ...

What is causing this array to automatically alter its value?

How can I prevent A from changing its value when I only want to modify Q in the first loop of this html/javascript code? Why does A change even though I am only changing Q? What steps can I take to avoid A from changing? <!DOCTYPE html> <html& ...

Transforming two child arrays within an object into a single array using Ramda

I am looking to transform an object into an array. The object I have is structured like this: const data = { t1: [ {"a": 1, "a1": 2}, {"b": 3, "b1": 4}, {"c": 5, "c1": 6} ], t2: [ {" ...

Issue with event binding on datepicker that is dynamically added is not functional

I have integrated the Kendo datepicker into my project, and I am facing an issue with duplicated div elements containing datepickers. The problem is that the datepicker events only fire once on the first duplicated div and then stop working altogether. I ...

Module for managing optional arguments in Node.js applications

I'm on the hunt for a Node.js module that can effectively manage and assign optional arguments. Let's consider a function signature like this: function foo(desc, opts, cb, extra, writable) { "desc" and "cb" are mandatory, while everything else ...

What is the best way to utilize TypeScript module augmentation with material-ui components?

I have gone through the answers provided in this source and also here in this link, but it appears that they are outdated. I attempted to enhance the type definition for the button component in various ways, including a separate typings file (.d.ts) as we ...

Utilize model instance methods in Sails.js for enhanced functionality within views

Is there a way to retain model instance functions when passed to a view? For example, my User model has a method called fullName which combines first name, last name, and prefix. In the controller: User.find().done(function(err,users){ res.view({ ...

"Let's delve into the world of dynamic variables and Javascript once

As a newcomer to JS, I've scoured countless posts for solutions, but nothing seems to work for me. The issue arises when trying to abstract the code to handle all variables rather than just explicitly expressed values. I am open to alternative method ...

External JavaScript files are also subject to the same origin policy

Suppose a website http://www.mysite.com contains an external JavaScript file added like this: <script src="http://www.yoursite.com/new.js"></script> Within the http://www.yoursite.com/new.js JavaScript file, there is an AJAX call to a script ...

Express encountered an issue when trying to upload a file through AngularJS

I am currently facing an issue with uploading a file to express and subsequently to mongoDB. Despite my efforts, when I attempt to upload the file to express, it appears that no data is being passed through the response. I am utilizing ng-file-upload.min. ...

Encountering RangeError with the Number() function on my express.js server

I'm working with an HTML form that looks like this: <form class="" action="/" method="post"> <input type="text" name="num1" placeholder="First Number"> <input type= ...

Experiencing a DNS error while running a JavaScript script using Node.js

const { Client, EmbedBuilder, GatewayIntentBits, Collection, Events, Partials } = require("discord.js"); require("dotenv").config(); const { Guilds, GuildMembers, GuildMessages } = GatewayIntentBits; const { User, Message, GuildMember, ...

Is it possible to transfer files using web-bluetooth technology?

As I work on developing an embedded system that counts the number of cars, saves their speed and time data in a logs file using rsyslog. Simultaneously, I am creating a web-API (in Typescript/Angular with Electron for Desktop usage and later Web as well) t ...

JavaScript function to sort an array by indexes specified in a second array

Consider this scenario: I require the capability to rearrange any one-dimensional array so that the new array begins with the center number (if the object count is odd) or the center two numbers (if the object count is even), and then progresses from low t ...

Unexpected halt in execution - VS Code Logpoint intervenes abruptly

Recently, I delved into the world of JavaScript/TypeScript development in VS Code. Intrigued by Eclipse Theia, I decided to explore it further by setting up a backend service. To track its execution, I added a logpoint to my backend service to see when it ...

When a webpage reload triggers a 404 error, my website's iframe with the source "videoUrl | sanitize" will display

I am attempting to retrieve a videoUrl from a database and set it to the iframe [attr.src] in order to display a YouTube video. It is imperative that the data originates from the database, as there are limitations preventing us from directly uploading and ...

Querying a collection of documents in MongoDB to find a specific element in

The document is inserted into the database with a single communication type 'sms' When searching for the inserted document, it is found successfully Confirmation that the document has been successfully inserted Unable to find the document whe ...

Saving user sessions in Express.js for a complete MERN Stack web application

I've been struggling to save a user's email in the session for my express.js application. However, every time I attempt to do so and call another function, the session remains undefined. My goal was to store it in the browser without storing each ...

What is the best way to apply color to a line-through click event in React without affecting the font color?

I'm attempting to change the click event on a line-through element to turn red when clicked, but I can't find any solutions. I've tried various methods with no success. Edit: After adding "color":"red" following "none", the line is now red, ...

Unable to display content when the button is triggered

I am facing an issue with hiding a div (class="login-form") and displaying it only after clicking the Login button on my HTML page using jQuery. However, despite clicking the button, the login form does not appear. Can anyone help me understand why this ha ...