Вопрос
Уинстон предоставляет winston.loggers.get("logger name")
, чтобы получить регистратор. Как получить регистратор, созданный с использованием winston.createLogger(options)
(у него нет имени)
Почему я спрашиваю
Я создал регистратор в файле с помощью winston.createLogger(options)
, а затем экспортирую созданный регистратор с помощью module.exports
.
Я бы хотел использовать этот регистратор во всем своем приложении, но каждый раз, когда я require("")
его, вызывается createLogger(options)
, таким образом каждый раз создавая новый регистратор.
Образец кода
const winston = require('winston');
// this logger does not have a name!
// Thus, how do I get it.
const logger = winston.createLogger({});
module.exports = logger;
2 ответа
Формальный ответ для потомков:
Несколько вызовов require () в одном процессе node.js не будут создавать новые экземпляры модуля. Первый будет, затем последующие вызовы вернут ссылку на первый. Это сделано специально и очень удобно.
Для тех, кто все еще хочет иметь возможность получить регистратор Winston по имени, когда он был создан с помощью createLogger()
, я не нашел ответа.
Но вы можете сделать это и так.
Создайте регистратор с помощью winston.loggers.add(name, options)
Получить регистратор с помощью winston.loggers.get(name)
Кроме того, Node JS require()
кеширует модули. КТО ЗНАЛ!
Спасибо за помощь.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.