JavaRush /Blog Java /Random-PL /Łączymy logowanie z naszym projektem JavaRush (slf4f i lo...
Дмитрий Яковенко
Poziom 35
Москва

Łączymy logowanie z naszym projektem JavaRush (slf4f i log4j)

Opublikowano w grupie Random-PL
W moim artykule możesz przeczytać, jak połączyć Mavena z projektem JavaRush . Poniżej założono, że wiesz, jak to zrobić. Jeśli chcemy użyć slf4j, potrzebujemy zależności:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>
Następnie robimy:
public static void main(String[] args) throws IOException {
    Logger logger = LoggerFactory.getLogger(Solution.class);
    logger.info("hello world!");
}
I dostajemy błąd:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Co jest generalnie logiczne. slf4j jest opakowaniem, ale w co go zawinęliśmy? Nic? Cóż, mamy błąd. Możesz owinąć go wokół jednego z następujących: log4j, util.logging, NOP, System.err, JCL, logback. Więcej szczegółów w oryginalnej instrukcji . Spójrzmy na przykład log4j i System.err: 1) Zacznijmy od czegoś prostego, z System.err . Aby to zrobić, dodaj tę (slf4j-simple) do poprzedniej zależności (slf4j-api).
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.30</version>
</dependency>
Przyjmujemy te same wersje, na dzień 10 maja 2021 r. jest to wersja 1.7.30. Jeśli bierzesz zależności z https://mvnrepository.com/ , nie zapomnij usunąć
<scope>test</scope>
W przeciwnym razie Twoje dzienniki będą działać tylko w testach. 2) Teraz spróbujmy skonfigurować log4j , w tym celu musimy dodać 2 zależności: sam log4j i warstwę pomiędzy slf4j i log4j (slf4j-log4j12). To wygląda tak:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
Jasne jest, że musimy usunąć (slf4j-simple), aby slf4j nie miał wątpliwości, z którym rejestratorem powinien współpracować. I wyjdź (slf4j-api), ponieważ jest to slf4j. Jeśli chodzi o 2 dodane zależności. log4j dodajemy stary (od maja 2012, nie wiem dlaczego, można eksperymentować z innymi). Jego wersja to 1.2.17. Aby slf4j z nim współpracował, potrzebna jest odpowiednia warstwa - slf4j-log4j12, gdzie ostatnie znaki (12) oznaczają wersję log4j. W tym przypadku wersja slf4j-api i slf4j-log4j12 powinna wynosić 1.7.30 - najnowsza stabilna na ten moment. Po połączeniu zależności i zaktualizowaniu projektu Maven. Aby log4j działał, potrzebujesz jeszcze 2 rzeczy: 1) Skonfiguruj plik konfiguracyjny. Czytamy, wybieramy, kopiujemy. 2) Przed pracą przeczytaj konfigurację log4j:
PropertyConfigurator.configure("d:\\Java\\JavaRushTasks\\4.JavaCollections\\log4j.properties");
Cóż, lub gdzie masz plik. Jeśli chcesz zobaczyć wszystkie logi, nie zapomnij ustawić poziomu rejestrowania na WSZYSTKIE. Do CV dodajemy - log4j i slf4j. Jesteś wspaniały! Jeśli pomogłem - lajkuj, subskrybuj, dzwonku!)))
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION