程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了winston 未知记录器级别:未定义大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决winston 未知记录器级别:未定义?

开发过程中遇到winston 未知记录器级别:未定义的问题如何解决?下面主要结合日常开发的经验,给出你关于winston 未知记录器级别:未定义的解决方法建议,希望对你解决winston 未知记录器级别:未定义有所启发或帮助;

我使用 winston 来记录错误,在生产中它记录到文件,在开发中它记录到 console。我还设置了其他日志传输,即用于将错误发送到 slack 的自定义传输。

下面是我的logger.Js

const expressWinston = require('express-winston');
const { createLogger,format,transports } = require('winston');
const SlackAPIAccessDevTransport = require('./winston-slack');

const accessLogger = expressWinston.logger({
  transports: [
    new SlackAPIAccessDevTransport(),],format: format.combine(
    format.colorize(),format.Json(),),});

const logTofile = createLogger({
  transports: [
    new transports.file({
      Json: true,maxfiles: 5,level: 'error',colorize: false,filename: 'logs/error.log',maxsize: 5242880,// 5MB
    }),});

const logToConsole = createLogger({
  level: 'info',transports: [
    new transports.Console({
      format: format.combine(
        format.colorize(),format.simple(),}),});
module.exports = {
  logTofile,logToConsole,accessLogger,};

记录到文件工作正常,但对于 Console 传输,我得到 level undefined

这是我的错误中间件。

const Logger = require('../utils/logger');

module.exports = async (err,req,res,next) => {
  // log any kind of error
  console.log(err);
  const errorData = {
    date: new Date().toISOString(),env: process.env.NODE_ENV,name: err.name,message: err.message,API: req.url,method: req.method,stack: err.stack,body: req.body,clIEnt: req.connection.remoteAddress,};
  if (process.env.NODE_ENV === 'production') {
    Logger.logTofile.log(errorData);
  } else {
    Logger.logToConsole.log(err);
  }
return res.status(500).send('Something went wrong!');
}

解决方法

您需要使用 format.errors。

import { useLayoutEffect,useRef } from 'react'; const isBrowser = typeof window !== `undefined`; const getScrollPosition = ({ element,useWindow }) => { if (!isBrowser) return { x: 0,y: 0 }; const target = element ? element.current : document.body,position = target.getBoundingClientRect(); return useWindow ? { x: window.scrollX,y: window.scrollY } : { x: position.left,y: position.top }; }; export const useScrollPosition = (effect,deps,element,useWindow,wait) => { const position = useRef(getScrollPosition({ useWindow })); let throttleTimeout = null; const callBACk = () => { const currentPosition = getScrollPosition({ element,useWindow }); effect({ previousPosition: position.current,currentPosition: currentPosition }); position.current = currentPosition; throttleTimeout = null; }; useLayoutEffect(() => { const handleScroll = () => { if (wait && !throttleTimeout) throttleTimeout = setTimeout(callBACk,wait); else callBACk(); }; window.addEventListener(`scroll`,handleScroll); return () => window.removeEventListener(`scroll`,handleScroll); },deps); }; 格式允许您将 JavaScript 错误的实例直接传递给记录器。它允许您指定是否不包括堆栈跟踪。

此外,最好为 import { useScrollPosition } from '/path/to/useScrollPosition/useScrollPosition'; 日志添加自定义格式。

例如

errors

结果:

error

大佬总结

以上是大佬教程为你收集整理的winston 未知记录器级别:未定义全部内容,希望文章能够帮你解决winston 未知记录器级别:未定义所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:winston