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.