heroku-모든 로그를 보는 방법


468

heroku에 작은 앱이 있습니다. 로그를보고 싶을 때마다 명령 줄로 이동하여

heroku logs

그것은 단지 약 100 줄을 보여줍니다. heroku에서 애플리케이션의 전체 로그를 볼 수있는 방법이 없습니까?

답변:


785

업데이트 (dawmail333 덕분에) :

heroku logs -n 1500

또는, 통나무를 살리기 위해

heroku logs -t 

헤 로쿠 로그 문서

수천 줄 이상이 필요한 경우 heroku의 Syslog Drains를 사용할 수 있습니다

또는 (이전 방법) :

$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }

5
이것은 현재 삼나무 스택에서 작동하지 않습니다. 새로운 대안을 찾은 사람이 있습니까?
nathanvda

2
사용 heroku logs -n 1500하면 Cedar에서 사용할 수있는 가장 좋은 방법입니다. 당신이 그 이상 선이 필요하면, 당신은 시스템 로그 드레인이 필요합니다 devcenter.heroku.com/articles/logging#syslog_drains
리암 도슨

이것은 자산 파이프 라인 문제에도 유용한 팁입니다. heroku logs -n 2000 | grep '미리 컴파일 된'
Dave Collins

실제로 heroku run rails c입니다. 업데이트!
glebm

3
이전 방법의 경우 왜 레일 대신 콘솔을 실행 heroku run cat log/production.log합니까?
클로이

139

heroku에서 로깅이 크게 향상되었습니다!

$ heroku logs -n 500

보다 나은!

$ heroku logs --tail

참조 : http://devcenter.heroku.com/articles/logging

업데이트

이들은 더 이상 추가 기능이 아니라 기본 기능의 일부입니다. :)


4
또한 -n은 1500까지 올라갈 수 있습니다 .Heroku는 그 후 아무것도 잘라 버린다고 가정합니다.
Liam Dawson

52

Heroku는 로그를 시간순으로 정렬 된 이벤트 스트림으로 취급합니다. *.log이러한 환경에서는 다양한 이유로 파일 시스템의 파일에 액세스 하지 않는 것이 좋습니다.

첫째, 앱에 둘 이상의 dyno가있는 경우 각 로그 파일은 앱 이벤트에 대한 부분보기 만 나타냅니다. 전체 파일을 보려면 모든 파일을 수동으로 집계해야합니다.

둘째, Heroku의 파일 시스템은 dyno가 다시 시작되거나 이동 될 때마다 ( 일일한 번 발생 ) 로그 파일이 손실 될 때마다 일시적인 의미를 갖 습니다. 그래서 당신은 그 단일 dyno의 로그를 하루에 최대로 볼 수 있습니다.

마지막으로 Cedar 스택이 실행 중이 heroku console거나 heroku run bash현재 실행중인 dyno에 연결되지 않습니다. bash명령을 위해 특별히 새로운 것을 생성합니다 . 이것을 일회성 프로세스 라고합니다 . 따라서에 생성 된 프로세스에서 실제 http 프로세스를 실행중인 다른 dyno에 대한 로그 파일을 찾을 수 없습니다 heroku run.

로깅 및 가시성은 일반적으로 Heroku의 일류 시민이며 이러한 문제를 해결하는 몇 가지 도구가 있습니다. 먼저 모든 dyno 및 애플리케이션 / 스택의 모든 계층 에서 실시간으로 애플리케이션 이벤트 스트림을 보려면 이 heroku logs -t명령을 사용하여 출력을 터미널에 출력하십시오.

$ heroku logs -t
2010-09-16T15:13:46-07:00 app[web.1]: Processing PostController#list (for 208.39.138.12 at 2010-09-16 15:13:46) [GET]
2010-09-16T15:13:46-07:00 app[web.1]: Rendering template within layouts/application
2010-09-16T15:13:46-07:00 heroku[router]: GET myapp.heroku.com/posts queue=0 wait=0ms service=1ms bytes=975
2010-09-16T15:13:47-07:00 app[worker.1]: 2 jobs processed at 16.6761 j/s, 0 failed ...

이것은 현재 응용 프로그램의 동작을 관찰하는 데 효과적입니다. 장기간 로그를 저장하려는 경우 로그 보존, 경고 및 트리거를 제공 하는 많은 로깅 추가 기능 중 하나를 사용할 수 있습니다 .

마지막으로, 로그 파일을 직접 저장하려면 Heroku에서 이벤트 스트림을 수신하고 사후 처리 / 분석을 수행하도록 자체 syslog 드레인 을 설정할 수 있습니다 .

요약 : 정적 로그 파일을 사용 heroku console하거나 보지 마십시오 heroku run bash. heroku logs로깅 추가 기능을 사용하여 앱에 대한 Heroku의 로그 이벤트 스트림으로 파이프하십시오 .


23

개별 스트림 / 필터도 참조하십시오.

예를 들어 애플리케이션 로그 만 테일

heroku logs --source app -t

또는 라우터 로그 만보십시오

heroku logs --ps router

아니면 함께 묶어

heroku logs --source app --ps worker

너무 좋아 ..


5
내 응용 프로그램의 로그 만 보려면 heroku logs --ps web.1(1 dyno로)
Maxence

22

위의 답변은 명령 줄에서 볼 수 있도록 도움이됩니다. 반면 GUI를 사용하려면 heroku 계정에 로그인 한 다음 응용 프로그램을 선택하고 마지막으로 로그보기를 클릭해야합니다

이미지보기


1
이 방법은 "로그보기"옵션을 클릭 한 시점부터 시작하여 발생하는 로그 출력 만 표시합니다. 따라서 콘솔에 들어 가지 않고 로그를 본질적으로 조정하고 싶지 않으면 유용하지 않습니다.
Jeremy Gunter

2
이 UI 자체의 모든 로그를 볼 수있는 옵션이 없습니까?
Sunil Garg

16

Heroku 로깅을 따르십시오

귀하의 로그를 보려면

  1. logs 명령은 기본적으로 100 개의 로그 라인을 검색합니다.

heroku logs

  1. 최대 1500 줄 표시 --num(또는 -n) 옵션.

heroku logs -n 200

  1. 실시간으로 로그 표시

heroku logs --tail

  1. heroku에 많은 앱이 있다면

heroku logs --app your_app_name



8

Heroku의 명령 줄 인터페이스 ( CLI 사용법 )를 사용하여 로그 파일에 액세스 할 수 있습니다 .

Heroku의 CLI가 설치되어 있고 응용 프로그램 이름 (예 :)을 알고 있다면 https://myapp.herokuapp.com/다음 명령을 실행할 수 있습니다.

heroku logs --tail --app=myapp

다음을 사용하여 실시간 스트림으로 로그에 액세스 할 수도 있습니다.

heroku logs --source app --tail --app=myapp

로그가 다음과 같이 말하는 경우 :

npm ERR! 이 실행에 대한 전체 로그는 다음에서 찾을 수 있습니다.

npm ERR! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log

그런 다음 Heroku CLI를 통해 bash 터미널을 사용하여 액세스 할 수도 있습니다.

heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log

나는 얻는다/usr/bin/less: cannot execute binary files
Michael Fulton


4

WAR 파일의 경우 :

나는 github을 사용하지 않고 WAR 파일 (직접 훨씬 쉽고 빠르다)을 직접 업로드했습니다.

그래서 다음이 도움이되었습니다.

heroku logs --app appname

누군가에게 도움이되기를 바랍니다.


4

-t또는 --tail옵션 을 사용해야 하고 heroku 앱 이름을 정의해야합니다.

heroku logs -t --app app_name

4

내 솔루션은 응용 프로그램을 처음 시작할 때 다음과 같이 완전한 로그를 얻는 것입니다.

heroku logs -n 1500 > log

그런 다음 다음 fgrep -vf과 같이 최신 상태로 유지하십시오.

heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log

연속 로깅의 경우 x 분 (또는 초)마다 watch를 사용하여 반복하십시오.


2

자세한 로그를 보려면 production.rb파일 에 두 줄을 입력해야 합니다.

config.logger = Logger.new(STDOUT)
config.logger.level = Logger::DEBUG

그런 다음

heroku logs -t

자세한 로그를 볼 수 있습니다.


2

나는 이런 식으로하는 것을 선호합니다

heroku logs --tail | tee -a herokuLogs

스크립트를 백그라운드에서 실행중인 상태로두고 언제든지 원하는 방식으로 텍스트 파일의 로그를 필터링 할 수 있습니다.


고마워, 스크롤하는 데 시간이 걸렸지 만 마침내 나를위한 해결책을 찾았습니다.
Meinkraft

2

모든 로그를 보려면 로그 유출을 구현해야하며 로그를 비워야합니다 (모든 기록 로그 관리).

  1. 첫 번째 옵션 -Splunk를 사용할 수 있습니다. 다음과 같이 모든 로그를 비울 수 있습니다.
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name

그런 다음 splunk 서버에 로그인하여 원하는 수의 로그를 검색하십시오. Splunk를 사용하고 있으며 완벽하게 작동합니다.

  1. 두 번째 옵션 -다음과 같이 앱에 추가 기능을 구입할 수 있습니다. (이 옵션은 사용하지 않았지만 사용 가능한 옵션입니다).

    • Timber.io
    • 스모 로직
    • LogEnteries
    • 로그 DNA
    • 페이퍼 트레일

아래 옵션을 살펴볼 수도 있습니다. 로그를 JSON 형식으로 만들려면 Splunk / ELK와 같은 외부 시스템으로 로그를 푸시하는 데 도움이되므로 검색하기가 쉬워집니다 (성능도 좋습니다). JSON으로.

https://github.com/goodeggs/heroku-log-normalizer

Readme.md가 없지만 https://github.com/goodeggs/bites/issues/20에 몇 가지 설명이 있습니다.

마지막으로

그리고 이미 다른 사용자가 언급 한대로 항상 아래 명령을 사용할 수 있습니다.

다음 명령은 heroku에서 생성 로그를 마무리합니다.

heroku logs -t -a <app_name>

다음 comand은 heroku에서 1000 줄의 로그를 보여줍니다.

heroku logs -n 1000 -a <app_name>

1500 줄의 최신 로그 만 사용할 수 있으며 나머지는 heroku dyno에서 삭제됩니다.


1

나는 애드온을 사용하고 Logentries를 사용하는 것이 좋습니다. 이를 사용하려면 명령 행에서 실행하십시오.

heroku addons:create logentries:le_tryit

(이 명령은 무료 계정에 대한 애드온을 생성하지만 원하는 경우 분명히 업그레이드 할 수 있습니다)

Logentries를 사용하면 한 달에 최대 5GB의 로그 볼륨을 저장할 수 있습니다. 해당 정보는 지난 7 일 이내에 명령 검색으로 검색 할 수 있으며 실시간 알림이 있습니다.

따라서이 애드온을 사용하여 Heroku가 기본적으로 저장하는 1500 줄에 도달 할 때 로그가 더 이상 손실되지 않도록하십시오. 도움이 되었기를 바랍니다! 좋은 하루 되세요!


1

heroku logs -t 라이브 로그를 보여줍니다. heroku logs -n 1500특정 수의 로그

그러나 여전히 이점이 있지만 무료 기본 계획이있는 종이 흔적 추가 기능을 사용하는 것이 좋습니다.


0

당신이 사용할 수있는 heroku logs -n 1500

그러나 이것은 권장되는 접근법이 아닙니다 (즉, 실제 그림을 보여주지 않습니다)

로깅 도구를 연결하는 것이 좋습니다. 부가 기능으로 (sumoLogic, paper trail n all)

그들은 모두 무료 버전을 가지고 있습니다.


-2

삼나무 스택은 다음을 참조하십시오.

https://devcenter.heroku.com/articles/oneoff-admin-ps

당신은 실행해야합니다 :

heroku run bash ...


9
Cedar heroku run bash에서 새로운 dyno를 가동하여 bash명령 을 호스팅합니다 . 해당 dyno의 파일 시스템에는 'active'웹 dyno의 로그 파일이 포함되어 있지 않으므로이 방법은 작동하지 않습니다.
Ryan Daigle
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.