×
Vytvárame riešenia

Ako zapisovať v Jave logy do súboru - časť 3

23.8.2016, Matej LednárKategória: Java
V tomto článku venovanom logovaniu predstavím Simple Logging Facade for Java (SLF4J) v spolupráci s Logback. Keďže nie som Java expert, aplikovanie logovania do súboru prostredníctvom SLF4J mi zabralo niekoľko hodín, kým som vytvoril funkčné nastavenie.


SLF4J spolu s Logbackom som sa snažil sfunkčniť v STS bez Mavenu. Žiaľ riešenia, ktoré by mi pomohli, som nenašiel. Medzi hlavné problémy patrili multiple bindings a konfigurácia (názov konfiguračného súboru, jeho obsah a umiestnenie). Nakoniec som to všetko vyriešil a teraz sa idem podeliť o riešenie.
Pre odstránenie problému Multiple bindings were found on the class path som nakoniec vyhodil knižnicu slf4j-simple-1.7.21.jar. Aj keď sa to na prvý pohľad nezdá, štruktúra konfiguračného súboru je iná ako pri Apache Log4j 2. Z hľadiska koncepcie ide o rovnaký princíp, no zápis je už odlišný. Aj tento fakt ma spomalil pri hľadaní funkčného riešenia.
Tiež mi chvíľu trvalo, kým som zistil, že pre zápis do súboru nestačí len SLF4J, ale je potrebné pridať aj Logback. Súbor, do ktorého sa zapisuje konfigurácia sa volá logback.xml. Súbor sa umiestňuje do adresára src. No a tu som mal ďalší problém. Pokiaľ súbor logback.xml nebol v adresári bin, tak sa zápis do definovaného log súboru nevykonával, resp. konfiguračný súbor nebol nájdený. Pre umiestnenie súboru logback.xml do adresára bin som musel vykonať na projekte Clean a potom build.
Pre fungovanie SLF4J s Logbackom je potrebné do projektu pridať nasledujúce knižnice:
  • slf4j-api-1.7.21.jar
  • logback-classic-1.1.7.jar
  • logback-core-1.1.7.jar
Príklad: Použitie SLF4J s Logbackom.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package logger;
import org.slf4j.*;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;
public class Slf4j {
public Logger logger = LoggerFactory.getLogger(getClass().getName());
public Slf4j() {
logger.trace("This is a trace message.");
logger.debug("This is a debug message.");
logger.info("This is an info message.");
logger.warn("This is a warning message.");
logger.error("This is an error message.");
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
}
}
Príklad: Obsah súboru logback.xml.
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>slf4j.log</file>
<append>false</append>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="FILE" />
</root>
</configuration>

Záver

Ak používate SLF4J s Logbackom podeľte sa o svoje riešenia prostredníctvom komentára.
JavalogloggerfileLogbackSLF4J
Žiadna časť tohto článku nesmie byť reprodukovaná bez uvedenia autora a URL na túto stránku.
Viac informácií nájdete v sekcii O projekte.

Komentáre

Článok neobsahuje zatiaľ žiadne komentáre.

Pridať komentár

Meno (povinné)
Web
Správa (povinné)
Napíš výsledok: 10+6-10  
Odoslať
Od najnovších