如何使用winston在子目录而不是根目录中设置日志?

Posted

技术标签:

【中文标题】如何使用winston在子目录而不是根目录中设置日志?【英文标题】:how to use winston to setup log in a sub directory instead of root directory? 【发布时间】:2014-08-04 21:13:41 【问题描述】:

我想在名为 logs 的目录中为我的 nodejs 项目设置日志

根据文档here

我在做:

winston.add(winston.transports.File,  filename: 'logs/mylogs.log' );

但它什么也没做。

我如何做到这一点?

【问题讨论】:

如果文件夹 /logs 文件夹不存在,您需要先创建它。 是的日志文件夹已经存在,但我仍然面临这个问题.. 你在哪个平台上? Linux、Windows、Mac? 我使用的是 Mac OS X 10.9.3 您希望您的日志文件夹位于您的项目文件夹中,对吧? 【参考方案1】:

将以下代码放入您的服务器文件中。

var winston = require('winston');
var fs = require( 'fs' );
var path = require('path');
var logDir = 'log'; // directory path you want to set
if ( !fs.existsSync( logDir ) ) 
    // Create the directory if it does not exist
    fs.mkdirSync( logDir );

var logger = new (winston.Logger)(
    transports: [
        new (winston.transports.Console)(
            colorize: 'all'
        ),
        new (winston.transports.File)(filename: path.join(logDir, '/log.txt'))
    ]
);
logger.info("Anything you want to write in logfile");

【讨论】:

fs 是核心模块,不需要从 npm 安装。【参考方案2】:

您应该使用相对路径(点和反斜杠)

winston.add(winston.transports.File,  filename: './logs/mylogs.log' );

【讨论】:

以上是关于如何使用winston在子目录而不是根目录中设置日志?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 V4 打印机驱动程序中设置输出文件的修复目录

Winston - 使用 maxsize 时记录轮换顺序

如何在资产目录中设置可访问性标签? Xcode 11

如果我使用自定义记录器功能而不是使用像winston或log4js这样的库,是否会影响Node服务器的性能?

如何在spring boot中获取所有RequestMapping的URL路径列表集

Winston-daily-rotate 忽略最大文件大小