Kategóriák

Végső frissítés: 2020. szeptember 17.

A Heroku-alkalmazás naplói az összes futó folyamat, rendszerkomponens és támogató szolgáltatás kimeneti adatfolyamaiból állnak össze. A Heroku Logplex az összes ilyen különböző forrásból származó naplófolyamokat egyetlen csatornába irányítja, így biztosítva az átfogó naplózás alapját.

Naplótípusok

Futásidejű naplók

A Heroku a következő naplókategóriákat aggregálja egy telepített alkalmazáshoz:

  • Alkalmazásnaplók – Magának az alkalmazásnak a naplózási kimenete. Ide tartoznak az alkalmazás kódja és függőségei által generált naplók. (Szűrő: --source app)
  • Rendszernaplók – A Heroku platform infrastruktúrája által az alkalmazás nevében végzett műveletekről szóló üzenetek, például: egy lezuhant folyamat újraindítása, egy webdyno alvása vagy ébresztése, vagy egy hibaoldal kiszolgálása az alkalmazás problémája miatt. (Szűrő: --source heroku)
  • API-naplók – Az Ön és az alkalmazásán dolgozó más fejlesztők által végzett adminisztratív műveletekről szóló üzenetek, például: új kód telepítése, a folyamatképzés skálázása vagy a karbantartási mód bekapcsolása. (Szűrő: --source app --dyno api)
  • Add-on naplók – Add-on szolgáltatásoktól származó üzenetek. Részletekért lásd a bővítmény Dev Center cikkét. (A szűrő bővítményenként változik)

Build logs

Az alkalmazás építése és telepítése során keletkező naplók elkülönülnek az alkalmazás futásidejű naplóitól. A sikeres és sikertelen építések naplói egyaránt elérhetők az alkalmazás Activity lapján a Heroku Dashboardon:

Screenshot of

Kattintson View build log bármelyik építési eseményre a Tevékenységi hírfolyamban, hogy megnézze annak naplóit:

Screenshot of

Log history limits

A Logplex a naplóüzenetek összeválogatására és továbbítására szolgál, nem pedig tárolására. Az összevont naplók legutóbbi 1500 sorát őrzi meg, amelyek 1 hét után lejárnak.

A naplók termelésre alkalmasabb megőrzéséhez a Heroku platformon elérhető naplózási bővítmények egyikét adhatja hozzá alkalmazásához. Ezen bővítmények többsége ingyenes csomagot kínál a kezdéshez.

Alternatívaként saját naplólefolyókat is implementálhat, így teljes mértékben ellenőrizheti, hogy mi történik a naplóival.

Naplóba írás

Minden, amit az alkalmazása a standard out (stdout) vagy a standard error (stderr) szabványos kimeneti vagy szabványos hiba (stdout) fájlba ír, rögzítésre kerül a naplóiban. Ez azt jelenti, hogy az alkalmazás kódjának bármely pontjáról naplózhat egy egyszerű kimeneti utasítással.

Ruby-ban valami ilyesmit használhat:

puts "Hello, logs!"

Javában:

System.err.println("Hello, logs!");System.out.println("Hello, logs!");

Ugyanez igaz a Heroku által támogatott többi nyelvre is.

A valós idejű naplózás előnyeinek kihasználásához szükség lehet arra, hogy kikapcsolja az alkalmazás által végzett naplópufferelést. Ruby nyelven például ezt adja hozzá a config.ru fájljához:

$stdout.sync = true

Néhány keretrendszer alapértelmezés szerint a stdout-től eltérő helyre küldi a naplókimenetet. Ezek további konfigurációt igényelhetnek. Például, ha az ActiveSupport által készített Ruby on Rails TaggedLogger-t használod, a következőket kell hozzáadnod az alkalmazásod konfigurációjához, hogy stdout naplózást kapj:

config.logger = Logger.new(STDOUT)

Naplólekérés CLI-n keresztül

Naplók megtekintése

Az alkalmazás legfrissebb naplóinak lekéréséhez használja a heroku logs parancsot:

$ heroku logs2010-09-16T15:13:46.677020+00:00 app: Processing PostController#list (for 208.39.138.12 at 2010-09-16 15:13:46) 2010-09-16T15:13:46.677023+00:00 app: Rendering template within layouts/application2010-09-16T15:13:46.677902+00:00 app: Rendering post/list2010-09-16T15:13:46.678990+00:00 app: Rendered includes/_header (0.1ms)2010-09-16T15:13:46.698234+00:00 app: Completed in 74ms (View: 31, DB: 40) | 200 OK 2010-09-16T15:13:46.723498+00:00 heroku: at=info method=GET path="/posts" host=myapp.herokuapp.com" fwd="204.204.204.204" dyno=web.1 connect=1ms service=18ms status=200 bytes=9752010-09-16T15:13:47.893472+00:00 app: 2 jobs processed at 16.6761 j/s, 0 failed ...

A példában a kimenet az alkalmazás egyik webdynójának, a Heroku HTTP routerének és az alkalmazás egyik workerének naplósorait tartalmazza.

A logs parancs alapértelmezés szerint 100 naplósort kér le. A --num (vagy -n) opcióval megadhatja a lekérdezendő naplósorok számát (legfeljebb 1500 sorig).

$ heroku logs -n 200

Real-time tail

A tail -f parancshoz hasonlóan a real-time tail is megjeleníti a legutóbbi naplósorokat, és nyitva hagyja a munkamenetet a valós idejű naplók beáramlása előtt. Az alkalmazás naplóinak élő folyamát megtekintve betekintést nyerhet az élő alkalmazás viselkedésébe, és hibaelháríthatja az aktuális problémákat.

A naplóit a --tail (vagy a -t) segítségével követheti.

$ heroku logs --tail

Amikor végzett, nyomja meg a Ctrl+C billentyűkombinációt a prompthoz való visszatéréshez.

A valós idejű tail munkamenet egy óra inaktivitás után automatikusan befejeződik.

Naplóformátum

A heroku logs parancs kimeneti formátuma a következő:

timestamp source: message
  • Időbélyeg – A dyno vagy komponens által a naplósor előállításának időpontjában rögzített dátum és időpont. Az időbélyeg az RFC5424 által meghatározott formátumban van, és mikroszekundumos pontosságot tartalmaz.
  • Forrás – Az alkalmazás összes dinójának (webes dinók, háttérmunkások, cron) forrása, app. A Heroku összes rendszerkomponensének (HTTP router, dyno manager) a forrás, heroku.
  • Dyno – A naplósort író dyno vagy komponens neve. Például a worker #3 worker.3, a Heroku HTTP router pedig router.
  • Message – A naplósor tartalma. A dynók által generált, 10000 bájtot meghaladó sorokat a rendszer 10000 bájtos darabokra bontja, extra hátul lévő újsorok nélkül. Minden egyes darab külön naplósorként kerül továbbításra.

Szűrés

Ha csak egy bizonyos forrással, egy bizonyos dinóval vagy mindkettővel rendelkező naplókat szeretne lekérni, használhatja a --source (vagy -s) és --dyno (vagy -d) szűrési argumentumokat:

$ heroku logs --dyno router2012-02-07T09:43:06.123456+00:00 heroku: at=info method=GET path="/stylesheets/dev-center/library.css" host=devcenter.heroku.com fwd="204.204.204.204" dyno=web.5 connect=1ms service=18ms status=200 bytes=132012-02-07T09:43:06.123456+00:00 heroku: at=info method=GET path="/articles/bundler" host=devcenter.heroku.com fwd="204.204.204.204" dyno=web.6 connect=1ms service=18ms status=200 bytes=20375$ heroku logs --source app2012-02-07T09:45:47.123456+00:00 app: Rendered shared/_search.html.erb (1.0ms)2012-02-07T09:45:47.123456+00:00 app: Completed 200 OK in 83ms (Views: 48.7ms | ActiveRecord: 32.2ms)2012-02-07T09:45:47.123456+00:00 app: 1 jobs processed at 23.0330 j/s, 0 failed ...2012-02-07T09:46:01.123456+00:00 app: Started GET "/articles/buildpacks" for 4.1.81.209 at 2012-02-07 09:46:01 +0000$ heroku logs --source app --dyno worker2012-02-07T09:47:59.123456+00:00 app: Article#record_view_without_delay completed after 0.02212012-02-07T09:47:59.123456+00:00 app: 5 jobs processed at 31.6842 j/s, 0 failed ...

A dinó szerinti szűrésnél vagy az alapnevet (pl., --dyno web) vagy a teljes nevet (pl, --dyno web.1) használható.

A szűrési kapcsolókat a --tail kapcsolóval is kombinálhatja, hogy a szűrt kimenet valós idejű folyamát kapja.

$ heroku logs --source app --tail

Naplóüzenetek sorrendje

A naplók lehívásakor észreveheti, hogy azok nem mindig pontosan időrendben vannak, különösen, ha több komponensről van szó. A naplók sok forrásból (útválasztó csomópontokból, dinókból stb.) származnak, és a Logplex egyetlen naplófolyamba állítja össze őket. Maga a Logplex elosztott architektúrát használ a magas rendelkezésre állás biztosítása érdekében, ami azt jelenti, hogy a naplóüzenetek több Logplex-csomóponton is összegyűlhetnek, és ezért rendezetlenül érkezhetnek.

Naplólekérés a webes műszerfalon keresztül

Naplók megtekintése

A Heroku műszerfalára bejelentkezve megtekintheti a naplóit a weben. Navigáljon a látni kívánt alkalmazáshoz például https://dashboard.heroku.com/apps/<app-name>. Ha ezen az oldalon kiválasztja a “több” lehetőséget, akkor egy legördülő menüt kell látnia:

Ebben a menüben válassza a “Naplók megtekintése” menüpontot.

Leave a Reply