IT이야기

foreman은 "started with pid #"줄만 표시하고 다른 것은 표시하지 않습니다.

cyworld 2021. 4. 6. 21:34
반응형

foreman은 "started with pid #"줄만 표시하고 다른 것은 표시하지 않습니다.


감독을 실행하면 다음과 같은 결과가 나타납니다.

 > foreman start
 16:47:56 web.1     | started with pid 27122

ctrl-c를 통해 중지하는 경우에만 누락 된 항목이 표시됩니다.

^CSIGINT received
16:49:26 system    | sending SIGTERM to all processes
16:49:26 web.1     | => Booting Thin
16:49:26 web.1     | => Rails 3.0.0 application starting in development on http://0.0.0.0:5000
16:49:26 web.1     | => Call with -d to detach
16:49:26 web.1     | => Ctrl-C to shutdown server
16:49:26 web.1     | >> Thin web server (v1.3.1 codename Triple Espresso)
16:49:26 web.1     | >> Maximum connections set to 1024
16:49:26 web.1     | >> Listening on 0.0.0.0:5000, CTRL+C to stop
16:49:26 web.1     | >> Stopping ...
16:49:26 web.1     | Exiting
16:49:26 web.1     | >> Stopping ...

어떻게 고치나요?


다음 두 가지 방법으로이 문제를 해결할 수있었습니다.

  1. 에서 https://github.com/ddollar/foreman/wiki/Missing-Output :

    프로그램에서 출력이 표시되지 않는 경우 표준 출력을 버퍼링 할 가능성이 있습니다. Ruby는 기본적으로 stdout을 버퍼링합니다. 이 동작을 비활성화하려면 프로그램에서 가능한 한 빨리이 코드를 추가하십시오.

    # ruby
    $stdout.sync = true
    
  2. heroku toolbelt 패키지 를 통해 포먼을 설치하여

그러나 나는 아직도 무슨 일이 일어나고 있는지, 왜 위의 두 가지 방법으로 문제가 해결되었는지 모르겠습니다.


내 솔루션은 $stdout.sync = trueconfig / environments / development.rb의 맨 위에 놓는 것이 었습니다 .

그러면 개발 환경 (씬 포함)을로드하는 모든 것이 표준 출력을 버퍼링하지 않습니다.


"Foreman은 실행되는 프로세스에 의해 stdout에 기록 된 모든 것을 터미널 출력에 표시합니다." -ddollar 감독 문제 # 57 참조

BTW, 로그를보기 위해 Procfile에 tailf를 사용할 수 있습니다.

web: bundle exec rails server thin -p $PORT
log: tail -f log/development.log

팁 : tailf는 OSX에 존재하지 않으며 tail -f -n 40 log / development.log가 작동합니다.


Foreman을 사용하여 Ryby 프로젝트가 아닌 Python 프로젝트를 실행하고 동일한 문제가있는 경우 다음과 같은 몇 가지 솔루션이 있습니다. Procfile을 사용하여 Python CLI를 직접 호출하는 경우 '-u'옵션을 사용하여 stdout 버퍼링을 방지 할 수 있습니다.

python -u script.py

Procfile을 사용하여 gunicorn, flask, bottle, eve 등을 호출하는 등 WSGI 서버를 관리하는 경우 다음을 포함하는 ".env"파일을 Python 프로젝트의 루트에 추가 할 수 있습니다.

PYTHONUNBUFFERED=True

같은 문제가 있습니다 (ruby 1.9.3-p0, rails 3.2rc2, OSX 10.7).

이 줄을 내 Gemfile에 추가하여 foreman-0.27.0을 사용하여 문제를 해결했습니다.

gem 'foreman', '0.27.0'

나도 같은 문제가 있었지만 다른 해결책이 있습니다. (루비 1.9.2p290, 레일 3.1.0, 우분투 10.04.3)

내 Procfile의 줄을 다음과 같이 변경했습니다.

web: bundle exec thin start -p $PORT

에:

web: bundle exec rails server thin -p $PORT

더 이상 문제가되지 않았습니다.

참조 URL : https://stackoverflow.com/questions/8717198/foreman-only-shows-line-with-started-with-pid-and-nothing-else

반응형