我只想将所有信息记录在一个文件中。我正在使用 pm2“0.12.1”和“winston”:“0.8.3”。
这是我的温斯顿代码
var winston = require('winston');
var customLoggerLevels = {
levels: {
trace: 0,
debug: 1,
info: 2,
warn: 3,
error: 4
},
colors: {
trace: 'blue',
debug: 'green',
info: 'grey',
warn: 'yellow',
error: 'red'
}
};
var logger = new (winston.Logger)({
levels: customLoggerLevels.levels
});
Run Code Online (Sandbox Code Playgroud)
和我的生态系统.json 的一部分
"apps" : [
{
"name" : "myapp",
"script" : "server.js",
"instances" : "1",
"err_file" : "myapp.log",
"out_file" : "myapp.log",
"env": {
"NODE_ENV": "development",
"PORT": 4000
},
"env_production" : {
"NODE_ENV": "production",
"PORT": …Run Code Online (Sandbox Code Playgroud) 我有一个用coffeescript编写的NodeJS应用程序,它要求我设置stack_size参数以使其正确运行.该命令看起来像是为了让它运行.
coffee --nodejs --stack_size=65000 app.coffee
Run Code Online (Sandbox Code Playgroud)
现在我想将它集成到PM2中,但无法弄清楚如何添加像stack_size这样的参数.我该怎么办呢?
嘿伙计们,我完全被这个人困住了.
基本上我想在我的本地开发人员能够看到我的src js文件文件并用babel转换它们并将它们输出到我的dist文件夹然后在完成之后有pm2重启节点加载最新的更改.
我遇到的问题是我不能为我的生活弄清楚如何添加一个回调来监视,以便重启pm2的调用只发生在babel完成魔法转换文件之后.
var gulp = require("gulp");
var babel = require("gulp-babel");
var pm2 = require("pm2");
var watch = require("gulp-watch");
var plumber = require("gulp-plumber");
var SRC = "src/**/*js";
var DIST = "dist/";
function restartPM2() {
//restart pm2 code in here
}
gulp.task("default", function () {
return gulp.src(SRC)
.pipe(watch(SRC))
.pipe(plumber())
.pipe(babel())
.pipe(plumber.stop())
.pipe(gulp.dest(DIST));
// somewhere in here need a call back after babel has transformed
// the code and saved it to dist/ to then call restartPM2
});Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
我使用PM2来运行我的nodejs应用程序.
在群集模式下启动时"pm2 start server -i 0":PM2将自动生成与CPU内核一样多的工作程序.
什么是理想的工人数量,为什么?
我试图将一些参数传递给由pm2运行的Express应用程序。他们的文档中没有任何提示,但是显然可以将EV传递给您的节点应用程序,例如SOME_STUFF=xxx pm2 start app.js。
我使用PM2在生产服务器上运行Node应用程序.当我ssh进入服务器并运行时,htop我可以看到列出的多个PM2神守护进程.我不明白为什么会有多个进程,因为只有一个Sails应用程序通过PM2运行.
我的印象是Node应用程序只使用一个线程,因此我不确定为什么会列出多个PM2进程.有人可以帮助解释一下吗?
我使用以下命令安装了pm2模块:
npm install pm2 @ latest
然后我尝试使用
pm2 启动我的测试应用程序,如下所示:
$ pm2 start test.js
它会引发以下错误:
'pm2'无法识别为内部或外部命令
我需要为pm2设置环境变量吗?
我对pm2还是很陌生,目前正在尝试运行节点应用程序。除应用程序无缘无故地重新启动外,此方法工作正常。
该应用程序运行良好,在开发计算机上没有崩溃。日志文件不显示任何崩溃。(已经证明日志文件将记录崩溃。)
我将pm2配置错误吗?
{
"name" : "app1",
"cwd" : "/home/pm2/apps/app1/prod",
"script" : "dist/main.js",
"log_date_format" : "YYYY-MM-DD HH:mm Z",
"error_file" : "/home/pm2/apps/app1/logs/stderr.log",
"out_file" : "/home/pm2/apps/app1/logs/stdout.log",
"pid_file" : "/home/pm2/apps/app1/pids/app1.pid",
"instances" : 1, //or 0 => 'max'
"min_uptime" : "200s", // 200 seconds, defaults to 1000
"max_restarts" : 10, // defaults to 15
"max_memory_restart": "1M", // 1 megabytes, e.g.: "2G", "10M", "100K", 1024 the default unit is byte.
"cron_restart" : "1 0 * * *",
"watch" : false, …Run Code Online (Sandbox Code Playgroud) 我为PM2 Logrotate设置了以下设置:
rotateInterval= * * 23 * * *
max_size= 100MB
Run Code Online (Sandbox Code Playgroud)
我想每23小时轮换一次日志,并且/或者最多保留100MB的日志文件。但是由于某些奇怪的原因,PM2 Logrotate经常旋转/创建新日志文件的方式太频繁,因此我无法查看日志的历史记录,即。e pm2 logs --lines 300仅显示已创建新日志。这是我在终端中看到的输出:
pm2-logrotate > "/root/.pm2/logs/scraper-init-out-1__2017-06-01_08-00-25.log" has been created
pm2-logrotate > "/root/.pm2/logs/pm2-logrotate-out-2__2017-06-01_08-00-25.log" has been created
pm2-logrotate > "/root/.pm2/logs/pm2-logrotate-out-2__2017-06-01_08-00-55.log" has been created
pm2-logrotate > "/root/.pm2/logs/pm2-logrotate-out-2__2017-06-01_08-01-25.log" has been created
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
我想使用PM2运行我的angular4应用,它将运行,但是当我关闭终端时,它将停止。
在这台服务器上已经运行了一个应用程序,它可以正常运行, 但是在我的应用程序中,当我打开终端时它将运行,否则它将停止
pm2启动server.js
我正在使用此命令运行我的应用程序,但是当我立即关闭终端时,它将停止,因此如何使用PM2永久运行此应用程序。