Nodejs log4js 在linux下无法生成日志
Nodejs log4js 在linux下无法生成日志
运行程序时在windows7下可以生成debug.log log.log日志文件,但一模一样代码部署在Linux却无法生成日志文件。但程序是正常跑着的,求高手指教。 “log4j”: { “appenders”: [{ “type”: “file”, “category”: “log-debug”, “filename”: “./logs/debug.log”, “maxLogSize”: 204800000, “backups”: 10 }, { “type”: “file”, “category”: [“log-info”, “console”], “filename”: “./logs/log.log”, “maxLogSize”: 204800000, “backups”: 10 }, { “type”: “console” }] }
Nodejs log4js 在Linux下无法生成日志
运行程序时在Windows 7下可以生成debug.log
和log.log
日志文件,但将一模一样的代码部署在Linux上却无法生成日志文件。程序本身是可以正常运行的,但是日志文件没有被创建或写入任何内容。求高手指教。
问题分析
-
路径问题:
- Windows 和 Linux 对于路径的处理方式不同。Windows 使用反斜杠(
\
),而 Linux 使用正斜杠(/
)。尽管你在配置中使用了./logs/debug.log
,这在大多数情况下应该没问题,但在某些特殊情况下可能需要检查路径是否正确。
- Windows 和 Linux 对于路径的处理方式不同。Windows 使用反斜杠(
-
权限问题:
- 确保你的程序有足够的权限来写入指定的日志目录。在Linux系统中,如果日志目录的权限设置不正确,可能会导致无法写入日志文件。
-
日志配置问题:
- 检查你的日志配置是否正确,确保类型和参数都正确无误。
示例代码
以下是一个简单的示例代码,展示如何使用 log4js
在Node.js中配置和生成日志文件:
const log4js = require('log4js');
// 配置日志
log4js.configure({
appenders: {
debug: {
type: 'file',
filename: './logs/debug.log', // 日志文件路径
maxLogSize: 204800000, // 文件最大大小
backups: 10 // 备份文件数量
},
info: {
type: 'file',
filename: './logs/log.log', // 日志文件路径
maxLogSize: 204800000, // 文件最大大小
backups: 10 // 备份文件数量
},
console: { type: 'console' }
},
categories: {
default: { appenders: ['console'], level: 'info' },
debug: { appenders: ['debug'], level: 'debug' },
info: { appenders: ['info'], level: 'info' }
}
});
const logger = log4js.getLogger();
logger.debug("This is a debug message");
logger.info("This is an info message");
解决方案
-
检查路径:
-
确认
./logs/
目录存在并且路径正确。可以在代码中添加一些检查逻辑,例如:const fs = require('fs'); if (!fs.existsSync('./logs')) { fs.mkdirSync('./logs'); }
-
-
检查权限:
-
确认你的程序有足够的权限写入日志目录。可以使用
chmod
命令修改目录权限,例如:chmod -R 755 ./logs
-
-
验证配置:
- 确保
log4js
的配置文件格式正确,并且没有拼写错误。
- 确保
通过以上步骤,你应该能够解决在Linux环境下无法生成日志文件的问题。
没有写权限?
有写的权限。应该是上下文问题。之前我是用crontab启动node,/usr/local/node /opt/app.js,后来我写了个脚本start.sh,如下 cd /opt/ /usr/local/node app.js 这样启动 问题就解决了。