Útmutató a fakitermelés Scala és java világban általában, programozó megjegyzések
Nincs komoly alkalmazás nem teljes anélkül, hogy belépés, akár saytik, GUI, vagy akár bármi alatt Android. A Java világ helyzete fakitermeléssel első pillantásra kissé bonyolult. Vannak SLF4J néhány Logback, valamilyen oknál fogva, akkor létre kell hozni az XML-fájlok, ennyi az egész. De, mint az gyakran előfordul, ha leülsz, és lassan minden érthető, sőt, minden nagyon egyszerű és logikus.
Abban az esetben, Scala rendelkezik figyelemreméltó könyvtár scala-naplózás. egy átalakító felett SLF4J. Használata Scala makrók. hozzáteszi ellenőrzések ezt a sort sor bejegyzés a naplóban, hogy a jelenlegi beállítások ténylegesen írt le valahol.
Ez azt jelenti, írsz:
jelentkezzen. hibakeresés # 40; s "Test $ msg" # 41;
... és bevezetése után a makró alakítjuk:
ha # 40; jelentkezzen. isDebugEnabled # 41; jelentkezzen. hibakeresés # 40; s "Test $ msg" # 41;
Ennek eredményeképpen, ha Hibanaplók ki, osztja és visszavételi memória a vonal interpoláció nem kerül végrehajtásra, és így tovább. Így kap sokkal nagyobb teljesítményt bo.
Próbáljuk kötni naplózás a REST-alapú szolgáltatások csal. A build.sbt függően hozzáfűz:
"Ch.qos.logback" % "logback-klasszikus" % "1.1.3"
"Com.typesafe.scala-naplózás" %% "scala-naplózás" % "3.1.0"
Az osztály konstruktora FinagleServiceExample hozzon létre egy logger:
import com. typesafe. scalalogging. _
import org. slf4j. LoggerFactory
privát val logger = Logger # 40; LoggerFactory. getLogger # 40; ezt. getClass # 41; # 41;
Akkor vegye és csak írni rönk:
logger. info # 40; s „szolgáltatás indult” # 41;
logger. hibakeresés # 40; s "olvasás $ key" # 41;
logger. hiba # 40; s "rossz kérés: $ req" # 41;
A következő naplózási szintek a legkisebbtől a legnagyobbig: TRACE, DEBUG, INFO, WARN, ERROR. A beállítások, amelyet alább említett tényleges szintje van kiválasztva. Amikor kiválasztunk egy bizonyos hatékony szintjét a napló tartalmazza az összes üzenet ezen a szinten, vagy magasabb. Például, ha kiválasztja a tényleges szintje az INFO, hasáb, látni fogja az összes információt, WARN és hibaüzenetek. Ezen kívül van egy különösen hatékony szintjének OFF, amely letiltja a fakitermelés.
Logback keres egy konfigurációs fájlt az alábbi szabályok vonatkoznak:
- Ha a classpath logback.groovy, akkor használják;
- Ellenkező esetben a osztályútvonal keresi logback-test.xml file;
- Ha nem az övé, hogy kitalálja logback.xml;
- Ha nem találja meg, az alapértelmezett beállítások használatával, hogy van, csak írj a konzolon
Tegyük a src / test / erőforrás fájl logback-test.xml az alábbiak szerint:
. % -5level [% thread]% naplózó -% msg% N
Mint tudod kitalálni, beszélünk itt Logback levelet az összes üzenetet DEBUG szint felett a STDOUT, a megadott formátumban. Ha most a teszteket a kimeneti igazán látni a DEBUG, INFO és hibanaplóit. Akkor cserélje ki a szintvonal
A src / fő / erőforrások létrehozása logback.xml némileg eltérő tartalommal:
.evett% -5level [% thread]% naplózó -% msg% N
.evett% -5level [% thread]% naplózó -% msg% N
Ezek a beállítások is különösebb magyarázat nem szükséges. Azt mondjuk, hogyan kell írni, hogy a konzol és a fájlt egy kicsit más naplófájlformátumot. Gyűjthetünk önálló jar, ezzel a paranccsal:
... és akkor futni, mondván:
java -jar. / Cél / scala- 2.11 / csal-Például-assembly- 0,1 .jar
... és ellenőrizze, hogy Logback sikeresen felveszi a beállítást.
Ön felülbírálhatja a beállításokat újrafordítás nélkül jar, mondván:
java -Dlogback.configurationFile = path / to / logback.xml \
-jar. / Cél / scala- 2.11 / csal-Például-assembly- 0,1 .jar
Tudod, hogy Logback automatikusan újra elolvasni a dokumentációt, a változás az első sorban a logback.xml valahogy így:
Szűrheti rönk osztályok és csomagok tekintetében hierarchia működik intuitív szemantika:
A appender-szakaszok, akkor adja meg a minimális szintet üzenetek:
Naplók specifikus csomagok és osztályok lehet küldeni a megadott appendery:
Beállíthatja a forgatás és archiválása rönk:
/path/to/application-..log.gz
Mint látható, minden nagyon rugalmas, nagyon erős, és nem jelenti azt, hogy szuper nehéz.
És amit írsz rönk?