Kurzusok
/
Elixir
Elixir
/
Feladatok
/
Naplózási szint
Naplózási szint

Naplózási szint

Tanulófeladat

Bevezetés

Atomok

Az Elixir atom típusa egy rögzített konstanst jelöl. Egy atom értéke egyszerűen a saját neve. Ezzel típusbiztos módon dolgozhatunk az adatokkal. Az atomokat a következőképpen definiálhatjuk:

# All atoms are preceded with a ':' then follow with alphanumeric snake-cased characters
variable = :an_atom

Az atomokat belül egy egész szám reprezentálja egy keresőtáblában, és ezek a számok automatikusan állítódnak be. Ezt a belső értéket nem lehet megváltoztatni.

Cond

Gyakran olyan kódot szeretnénk írni, amely egy feltétel alapján elágazik. Bár az Elixirben erre sokféle módszer van, az egyik legegyszerűbb a cond/1 használata.

A legegyszerűbb formájában a cond egy vagy több ág közül az első olyan úton halad tovább, amely true értéket ad:

cond do
  x > 10 -> :this_might_be_the_way
  y < 7 -> :or_that_might_be_the_way
  true -> :this_is_the_default_way
end

Ha egyetlen útvonal sem értékelődik ki true-ra, a futtatókörnyezet hibát dob.

Utasítások

Egy olyan rendszert üzemeltetsz, amely több alkalmazásból áll, és ezek rengeteg naplót állítanak elő. Szeretnél írni egy kis programot, amely összesíti ezeket a naplókat, és súlyossági szintjüknek megfelelő címkékkel látja el őket. A rendszeredben minden alkalmazás ugyanazokat a naplókódokat használja, de néhány régi alkalmazás nem támogatja az összes kódot.

Naplókód Naplócímke Támogatott a régi alkalmazásokban?
0 trace nem
1 debug igen
2 info igen
3 warning igen
4 error igen
5 fatal nem
egyéb / nem támogatott unknown -

1. Határozd meg a naplócímkét

Valósítsd meg a LogLevel.to_label/2 függvényt. A függvény egy egész szám típusú kódot és egy Boolean jelzőt kap, amely megmondja, hogy a napló régi alkalmazásból származik-e, visszatérési értéke pedig a naplósor címkéje atomként.

A táblázatban nem szereplő naplókódok unknown címkét adjanak vissza. Azok a naplókódok is unknown címkét adjanak vissza, amelyek a táblázatban a régi alkalmazásokban nem támogatottként szerepelnek, ha a napló régi alkalmazásból érkezett.

LogLevel.to_label(0, false)
# => :trace

LogLevel.to_label(0, true)
# => :unknown

2. Küldj riasztást

Ha valami váratlan történik, arról valakinek értesülnie kell.

Valósítsd meg a LogLevel.alert_recipient/2 függvényt, amely meghatározza, kinek kell elküldeni a riasztást. A függvény egy egész szám típusú kódot és egy Boolean jelzőt kap, amely megmondja, hogy a napló régi alkalmazásból származik-e, és a címzett nevét adja vissza atomként.

Használd az előző részfeladatban megírt LogLevel.to_label/2 függvényt. Ha a naplócímke error vagy fatal, a riasztást az ops csapatnak küldd. Ha egy régi rendszerből unknown címkével érkező naplót kapsz, a riasztást a dev1 csapatnak küldd; minden más unknown címkét a dev2 csapatnak kell elküldeni. Minden más naplócímkét nyugodtan figyelmen kívül hagyhatsz, ilyenkor false a visszatérési érték.

LogLevel.alert_recipient(-1, true)
# => :dev1

LogLevel.alert_recipient(0, false)
# => false
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Elixir Exercism

Készen állsz elkezdeni a(z) Naplózási szint feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Elixir nyelvet 58 fogalom168 feladat segítségével, valódi emberi mentorálással, mindez ingyen.