Ú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:

  1. Ha a classpath logback.groovy, akkor használják;
  2. Ellenkező esetben a osztályútvonal keresi logback-test.xml file;
  3. Ha nem az övé, hogy kitalálja logback.xml;
  4. 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 Az INFO vagy ERROR, és győződjön meg arról, hogy a log egyre kisebb.

A src / fő / erőforrások létrehozása logback.xml némileg eltérő tartalommal:





.evett% -5level [% thread]% naplózó -% msg% N



csal-example.log


.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:


INFO

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:

class = "ch.qos.logback.core.rolling.RollingFileAppender">

/path/to/application.log

.evett% -5level [% thread]% naplózó -% msg% N

class = "ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

/path/to/application.%i.log.zip
1
10

class = "ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

2MB

class = "ch.qos.logback.core.rolling.RollingFileAppender">

/path/to/application.log

.evett% -5level [% thread]% naplózó -% msg% N

class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

/path/to/application-..log.gz

10

Mint látható, minden nagyon rugalmas, nagyon erős, és nem jelenti azt, hogy szuper nehéz.

És amit írsz rönk?