2013-08-05 7 views
0

Heroku has read-only file system 두 개의 디렉토리 (log 및 tmp)를 제외하고 나는 파이썬 앱에서 내 로그를 그 중 하나로 덤프하려고했습니다.Heroku 앱 - 로그 폴더

heroku 서버 앱에 푸시 된 git 리포지토리에는 my (두 번 선택, 두 개의 디렉토리가 있는지 확인하기 위해 푸시 한 후 다운로드 한 앱까지)로 만든 폴더가 모두 포함되어 있습니다. "heroku run bash"를 실행하는 동안 "tmp"폴더 만 볼 수 있습니다. "ls -la"또는 심지어 .log 파일의 누락 된 위치에 관한 오류 메시지가 표시되어 "log"가 표시되지 않습니다.

2013-08-05T13:10:41.170434+00:00 heroku[web.1]: Starting process with command `python runserver.py` 
2013-08-05T13:10:43.132418+00:00 app[web.1]: Traceback (most recent call last): 
2013-08-05T13:10:43.609980+00:00 app[web.1]: File "runserver.py", line 2, in <module> 
2013-08-05T13:10:43.725134+00:00 app[web.1]:  from app_name import app 
2013-08-05T13:10:43.850738+00:00 app[web.1]: File "/app/app_name/__init__.py", line 13, in <module> 
2013-08-05T13:10:43.968714+00:00 app[web.1]:  from logger import flask_debug 
2013-08-05T13:10:44.081900+00:00 app[web.1]: File "/app/logger.py", line 8, in <module> 
2013-08-05T13:10:44.194540+00:00 app[web.1]:  logging.config.dictConfig(CONFIG) 
2013-08-05T13:10:44.306174+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/logging/config.py", line 797, in dictConfig 
2013-08-05T13:10:44.425589+00:00 app[web.1]:  dictConfigClass(config).configure() 
2013-08-05T13:10:44.535392+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/logging/config.py", line 579, in configure 
2013-08-05T13:10:44.274067+00:00 heroku[web.1]: Process exited with status 1 
2013-08-05T13:10:44.287252+00:00 heroku[web.1]: State changed from starting to crashed 

너무 빨리 생각 나는 TMP 폴더에 로그를 배치 할 수 있는지 확인하고 싶었다. 앱이 시작되면 모든 것이 잘되는 것처럼 보이지만 앱에서 버려진 것은 없습니다.

저는 솔루션을 꽤 많이 찾았으므로 사실 잃었습니다.

어쩌면 누군가가 나에게 말할 것이다 :

  1. 왜 "로그"디렉토리를 APP_NAME 폴더가 표시되지 않습니다/아래?
  2. "tmp"디렉토리가 로그를받지 못하는 이유는 무엇입니까?

    http://speedy.sh/VaR2w/logger.conf는 - 여기 내 로거 http://speedy.sh/c3QNs/logger.py의 *의의 .conf 파일입니다 - 여기 로거

PS 있습니다. "tmp"폴더 구성에 대한 콘솔의 로그가 작동합니다.

+1

확인 된 계정없이 무료 애드온을 추가 할 수 있어야한다, 또한

을위한 더 나은 방법 작동합니다, 하지만 : 디스크에 로그를 작성하여 정확히 무엇을 달성하려고 하는지를 공유 할 수 있습니까? dyno가 부팅 될 때마다 로그는 "사라집니다"(약 1 일), 여러 dynos를 가지고 있다면 dyno 등을 수동으로 다시 시작하면 다른 로그를 작성합니다. 당신의 자신의 사용은 더 나은 방법이 있습니다. –

+0

당신이 대답 할 때 heroku가 작동하는 것처럼 나는 이것이 대답일지도 모른다고 걱정합니다. 여전히 궁금 해서요. 왜 내가 볼 수 없는지/로그 할 수 없는데, 액세스 권한이 있어야하며 이유가 없습니다. 앱을 다시 시작하지 않아도/tmp에 로그가 없습니다. 더 좋은 점은 무엇입니까? :) – Archarachne

답변

0

두 더 나은 방법 :

1)에게 Heroku의 logdrain 기능 사용 : https://devcenter.heroku.com/articles/logging#syslog-drains

2) 애드온 중 하나를 사용하여 : Papertrail 및 이 Logly이 마음에 와서, 모두 무료로 계획을 가지고있다.

위의 # 1을 사용합니다. 모든 내 dynos의 모든 로그를 특정 파일 세트로 집계하는 ec2 인스턴스가 있습니다. logrotate을 사용하여 관리합니다. 그 다음에 간단한 grep을 사용하여 검색하고, 내가 느끼는 경우 tail -f을 따라 가야합니다. 내 rsyslogd 구성에 EC2 인스턴스는 말했다 : ----- 여기 절단 ----- 8 < ----- 여기 ----- 8 <을 잘라

----- 8 < - --- ----- $ MODLOAD imtcp $ InputTCPServerRun 5514

# vi /etc/rsyslog.d/01-heroku.conf 
if $syslogtag startswith 'app[postgres]' then /matchspot-logs/postgres 
& ~ 
if $syslogtag startswith 'app[pgbackups]' then /matchspot-logs/postgres 
& ~ 
if $syslogtag startswith 'heroku[' then /matchspot-logs/heroku 
& ~ 
if $syslogtag startswith 'app[' then /matchspot-logs/app 
& ~ 
+0

Unfortunatelly 나는 신용 카드를 가지고 있지 않다. 그리고 증명없이 Heroku는 무료 일지라도 아무것도 추가하지 않겠다. 제안 해 주셔서 감사합니다. – Archarachne

+0

정말입니까? 심지어 배수구에 통나무가 없습니까? 당연하지? –

+0

내가 redis를 켤 수 없었고, 나는 단지 loggly도 시도했다. 기본 addon을 무료로 사용하더라도 신용 카드로만 가능합니다. ( – Archarachne

0

웹 서버의 성능을 저하하지 않도록 당신 heroku run, 그것은 새로운 다이노을 회전 할 때 ... 그것에 대해 생각 여기 절단 이런 식으로 2 개의 웹 다이 노스가 있다면 어떤 것을 얻을 수 있습니까? heroku run?:) 여기에 다른 사람에 의해 제안

접근 방법은 당신이 나는 보통 의견의이 종류를 싫어