Code Monkey home page Code Monkey logo

Comments (7)

davidmarkclements avatar davidmarkclements commented on June 19, 2024 1

hi @nigampatel see http://npm.im/pino-arborsculpture

(with thanks to @jsumners for creating it)

from express-pino-logger.

jsumners avatar jsumners commented on June 19, 2024 1

And if you really want to emulate that Winston wrapper, all you have to do is implement an end point in your application that sets log.level = level.

Note: not the req.logger. That one exists only for the life time of the request.

from express-pino-logger.

nigampatel avatar nigampatel commented on June 19, 2024 1

Thank you for the quick response.

I don't have an option to use the pino-arborsculpture. I'll try to see if I can get it work using the log.level approach.

from express-pino-logger.

MarkusAnthony avatar MarkusAnthony commented on June 19, 2024 1

Can I get a little more info on this?
(I am relatively new to nodejs)

In server.js I:

const pino = require('pino');
const log = pino({ level: process.env.LOG_LEVEL || 'info' });

const expressPino = require('express-pino-logger');
const expressLogger = expressPino({ logger:log });
const app = express();

app.use(expressLogger);

So in "routes\changelevel.js" how would I set

"log.level = level"

@jsumners How do I get access to log from server.js? I am assuming you are talking about the initial instantiation of pino?

-Markus

from express-pino-logger.

jsumners avatar jsumners commented on June 19, 2024

I know nothing of Express. But I imagine it is attached to the request like req.log. So req.log.info('foo') would log the string "foo" and req.log.level = 'debug' would change the level to "debug".

from express-pino-logger.

MarkusAnthony avatar MarkusAnthony commented on June 19, 2024

The level change does not persist when using the following:

router.get('/level/:level', async function(req, res) {
  req.log.level = req.params.level
  res.send(200, 'Update log level to: ' + req.params.level);
});

router.get('/level', async function(req, res) {
  res.send(200, 'log level: ' + req.log.level);
});

@nigampatel did you find a way?

Markus

from express-pino-logger.

medolino avatar medolino commented on June 19, 2024

I run into the same problem today. It's a bit late to answer but anyway :)

If you want the level change to be persisted, you need to change loggingMiddleware.logger.level.

Here is an example, how you can do it:

const express = require('express')
const bodyParser = require('body-parser')
const pinoExpress = require('express-pino-logger')

const app = express()

app.use(bodyParser.json())

const pinoExpressMiddleware = pinoExpress()

app.use(pinoExpressMiddleware)

app.route('/log-level')
  // get current log level
  .get((req, res) => {
    res.json({ level: req.log.level })
  })
  // update log level
  .put((req, res) => {
    const newLogLevel = req.body.level

    pinoExpressMiddleware.logger.level = newLogLevel

    res.json({ status: `Log level changed to ${newLogLevel}` })
  })

app.listen(3000, () => console.log('Server started.'))

from express-pino-logger.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.