JSF 2 og Log4j integrationseksempel
Log4j
er en populær og udbredt logningsramme til Java-udvikling. Det er ret nemt at konfigurere og bruge Log4j
mekanisme i en JSF
Ansøgning. I denne vejledning vil jeg vise dig, hvordan du implementerer logningsfunktionaliteten med JSF
rammer.
1. Introduktion
1.1 JSF Framework
JSF
er et Mvc-framework, der letter brugergrænsefladerne til serverbaserede applikationer med genanvendelige UI-komponenter. Det letter udvikling af webapplikationer ved at:
- Leverer genbrugelige brugergrænsefladekomponenter
- Nem dataoverførsel mellem UI-komponenter
- Administrer brugergrænsefladetilstand på tværs af flere serveranmodninger
- Aktiver implementering af tilpassede komponenter
- Forbind klient-sidehændelse til server-side applikationskode
Applikationen ligner enhver anden Java-baseret webapplikation. Den kører i en Java-servlet-beholder og indeholder:
- JavaBeans-komponenter som modeller
- Et brugerdefineret tag-bibliotek til at repræsentere hændelseshandlere, validatorer og gengivelse af UI-komponenter
- Hjælperklasser og controllere på serversiden til at udføre brugerhandlingerne
- Validatorer, hændelses- og navigationsbehandlere
- Applikationskonfigurationsressourcefil
1.2 Hvad er Log4j?
Log4j
er en enkel, fleksibel og hurtig Java-baseret logningsramme. Det er trådsikkert og understøtter internationalisering. Vi har hovedsageligt 3 komponenter at arbejde med Log4j
:
- Logger :Den bruges til at logge meddelelserne
- Tillæg :Det bruges til at publicere logningsoplysningerne til destinationen som fil, database, konsol osv.
- Layout :Det bruges til at formatere logningsoplysninger i forskellige stilarter
1.2.1 Log4j Logger Class
Logger
klasse giver metoderne til logningsprocessen. Vi kan bruge getLogger()
metode til at få Logger
objekt. Syntaksen er angivet nedenfor:
static Logger log = Logger.getLogger(YourClassName.class);
Logger
klasse har 5
logningsmetoder, der bruges til at udskrive status for en applikation:
Beskrivelse | Metodesyntaks | |
---|---|---|
debug(Objektmeddelelse) | Det bruges til at udskrive meddelelsen med niveauet org.apache.log4j.Level.DEBUG . | offentlig void debug(Objektmeddelelse) |
fejl(Objektmeddelelse) | Det bruges til at udskrive meddelelsen med niveauet org.apache.log4j.Level.ERROR . | offentlig ugyldig fejl (Objektmeddelelse) |
info(Objektmeddelelse) | Det bruges til at udskrive meddelelsen med niveauet org.apache.log4j.Level.INFO . | offentlig ugyldig info(Objektmeddelelse) |
fatal(Objektmeddelelse) | Det bruges til at udskrive meddelelsen med niveauet org.apache.log4j.Level.FATAL . | offentlig ugyldig fatal(Objektmeddelelse) |
advarsel(Objektmeddelelse) | Det bruges til at udskrive meddelelsen med niveauet org.apache.log4j.Level.WARN . | offentlig void warn(Objektmeddelelse) |
trace(Objektmeddelelse) | Det bruges til at udskrive meddelelsen med niveauet org.apache.log4j.Level.TRACE . | offentlig ugyldig sporing (Objektmeddelelse) |
For at opsummere er prioritetsniveauet angivet nedenfor.
Trace < Debug < Info < Warn < Error < Fatal
Hvor org.apache.log4j.Level.FATAL
har den højeste prioritet og org.apache.log4j.Level.Trace
den laveste .
1.2.2 Log4j Appender Interface
Appender
er en grænseflade, som primært er ansvarlig for at udskrive logningsmeddelelserne til de forskellige destinationer såsom konsol, filer, sockets, database osv. I Log4j
vi har forskellige typer Appender
implementeringsklasser.
Fig. 1:Log4j-tillæg
1.2.3 Log4j Layout Class
Layout
komponent angiver det format, som log-sætningerne skrives ind i destinationslageret af Appender
. I Log4j
vi har forskellige typer Layout
implementeringsklasser.
Fig. 2:Log4j Layout
Åbn nu Eclipse Ide, og lad os begynde at bygge applikationen!
2. JSF2 og Log4j integrationseksempel
Nedenfor er de trin, der er involveret i udviklingen af denne applikation.
2.1 Anvendte værktøjer
Vi bruger Eclipse Kepler SR2, JDK 8 og Maven. Når det er sagt, har vi testet koden mod JDK 1.7, og det fungerer godt.
2.2 Projektstruktur
Lad os først gennemgå den endelige projektstruktur, hvis du er i tvivl om, hvor du skal oprette de tilsvarende filer eller mappe senere!
Fig. 3:Ansøgningsprojektstruktur
2.3 Projektoprettelse
Dette afsnit vil demonstrere, hvordan man opretter et Java-baseret Maven-projekt med Eclipse. I Eclipse Ide skal du gå til File -> New -> Maven Project
.
Fig. 4:Opret Maven Project
I vinduet New Maven Project vil det bede dig om at vælge projektplacering. Som standard vil 'Brug standardarbejdspladsplacering' være valgt. Bare klik på næste knap for at fortsætte.
Fig. 5:Projektdetaljer
Vælg Maven Web App Arketype fra listen over muligheder, og klik på næste.
Fig. 6:Arketypevalg
Den vil bede dig om at 'Indtast gruppen og artefakt-id'et for projektet'. Vi vil indtaste detaljerne som vist på billedet nedenfor. Versionsnummeret vil som standard være:0.0.1-SNAPSHOT
.
Fig. 7:Arketypeparametre
Klik på Udfør, og oprettelsen af et maven-projekt er fuldført. Hvis du observerer, har den downloadet maven-afhængighederne og en pom.xml
fil vil blive oprettet. Den vil have følgende kode:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Jsf2Log4jExample</groupId> <artifactId>Jsf2Log4jExample</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> </project>
Vi kan begynde at tilføje de afhængigheder, som udviklere ønsker, såsom Log4j
, Junit osv. Lad os begynde at bygge applikationen!
3. Applikationsbygning
Nedenfor er de trin, der er involveret i udviklingen af denne applikation.
3.1 Maven-afhængigheder
I dette eksempel bruger vi den mest stabile JSF
og Log4j
version for at konfigurere JSF
og logningsrammen. Den opdaterede filen vil have følgende kode:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Jsf2Log4jExample</groupId> <artifactId>Jsf2Log4jExample</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>Jsf2Log4jExample Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <!-- https://mvnrepository.com/artifact/com.sun.faces/jsf-api --> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.2.15</version> </dependency> <!-- https://mvnrepository.com/artifact/com.sun.faces/jsf-impl --> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.2.15</version> </dependency> <!-- Servlet API Dependency --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> </dependency> <!-- Log4J Dependency --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> <build> <finalName>${project.artifactId}</finalName> </build> </project>
3.2 Java-klasseoprettelse
Lad os oprette de nødvendige Java-filer. Højreklik på src/main/java
mappe, New -> Package
.
Fig. 8:Java-pakkeoprettelse
Et nyt pop-vindue åbnes, hvor vi indtaster pakkenavnet som:com.jcg.jsf.log4j
.
Fig. 9:Java-pakkenavn (com.jcg.jsf.log4j)
Når pakken er oprettet, skal vi oprette implementeringsklassen. Højreklik på den nyoprettede pakke, New -> Class
.
Fig. 10:Java-klasseoprettelse
Et nyt pop-vindue åbnes og indtast filnavnet som:Navigator
. Implementeringsklassen vil blive oprettet inde i pakken:com.jcg.jsf.log4j
.
Fig. 11:Java-klasse (Navigator.java)
3.2.1 Implementering af hjælpeklasse
Lad os skrive et hurtigt Java-program i JSF
controller-klassen for at bruge Log4j
rammer. Tilføj følgende kode til det.
Navigator.java
package com.jcg.jsf.log4j; import java.io.Serializable; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import org.apache.log4j.Logger; @ManagedBean @SessionScoped public class Navigator implements Serializable { private static final long serialVersionUID = 1L; private static Logger logger = Logger.getLogger(Navigator.class); private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String validate() { String navResult = ""; logger.info("Username is?= " + name); if (name.equalsIgnoreCase("jcg")) { navResult = "result"; } else { name = "test user"; navResult = "result"; } return navResult; } }
3.3 Konfigurationsfiler
Lad os skrive alle de konfigurationsfiler, der er involveret i denne applikation.
3.3.1 Log4j-konfigurationsfil
Log4j
vil normalt blive konfigureret ved hjælp af en egenskabsfil eller en XML
fil. Så når logerklæringerne er på plads, kan udviklere nemt kontrollere dem ved hjælp af den eksterne konfigurationsfil uden at ændre kildekoden. log4j.properties
filen er en Log4j
konfigurationsfil, som holder egenskaber i nøgleværdi-par. Som standard er LogManager
leder efter en fil med navnet log4j.properties
i CLASSPATH
.
For at konfigurere logningsrammen skal vi implementere en konfigurationsfil, dvs. log4j.properties
og sæt den ind i src/main/resources
folder. Tilføj følgende kode til det:
log4j.properties
# Root Logger Option log4j.rootLogger=INFO, console # Enable JSF Logging log4j.logger.javax.faces=DEBUG log4j.logger.com.sun.faces=DEBUG # Redirect Log Messages To Console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n
3.3.2 Web Deployment Descriptor
web.xml
fil erklærer, at servlet'en modtager alle slags anmodninger og angiver standardsiden, når du får adgang til programmet. Tilføj følgende kode til det:
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="JSF2HelloWorldUsingMaven_ID" version="2.4"> <display-name>Jsf2Log4jExample</display-name> <!-- JSF Mapping --> <servlet> <servlet-name>JSF Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Map These Ffiles With JSF --> <servlet-mapping> <servlet-name>JSF Servlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>JSF Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <!-- Welcome Page --> <welcome-file-list> <welcome-file>form.xhtml</welcome-file> </welcome-file-list> </web-app>
3.5 Oprettelse af JSP-visninger
Lad os skrive en simpel visning i Jsf2Log4jExample/src/main/webapp/WEB-INF/views
folder. Denne side viser blot #{navigator.name}
egenskab, hvis værdi vil blive indstillet på inputsiden. Tilføj følgende kode til det:
form.xhtml
<!DOCTYPE HTML> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>JSF Log4j Example</title> <style type="text/css"> .textPlacement { margin: 12px; } </style> </h:head> <h:body> <center><h2>JSF Log4j Example</h2></center> <h:form id="loginForm"> <div id="username" class="textPlacement"> <h:outputLabel value="Username: " /><h:inputText value="#{navigator.name}" /> </div> <div id="submit" class="textPlacement"> <h:commandButton value="Say Hello" action="#{navigator.validate}" /> </div> </h:form> </h:body> </html>
4. Kør programmet
Da vi er klar til alle ændringerne, lad os kompilere projektet og implementere applikationen på Tomcat7-serveren. For at implementere applikationen på Tomat7 skal du højreklikke på projektet og navigere til Run as -> Run on Server
.
Fig. 12:Sådan implementeres applikation på Tomcat
Tomcat vil implementere applikationen i sin web-apps-mappe og vil starte dens udførelse for at implementere projektet, så vi kan gå videre og teste det i browseren.
5. Projektdemo
Åbn din yndlingsbrowser og tryk på følgende URL. Outputsiden vil blive vist.
http://localhost:8085/Jsf2Log4jExample/
Servernavn (localhost) og port (8085) kan variere i henhold til din tomcat-konfiguration. Udviklere kan fejlsøge eksemplet og se, hvad der sker efter hvert trin. God fornøjelse!
Fig. 13:Application Output
Indsend formularoplysningerne og bemærk, at nogle logposter er tilføjet til serverens konsol som følger:
INFO | 2017-11-26 15:04:07 | [http-bio-8085-exec-7] log4j.Navigator (Navigator.java:30) - Username is?= jcg
Det er alt for dette indlæg. God læring!!
6. Konklusion
Det er alt for at få udviklerne i gang med Log4j
funktionalitet i JSF
rammer. Jeg håber, at denne artikel tjente dig, hvad end du ledte efter. Udviklere kan downloade eksempelapplikationen som et Eclipse-projekt i afsnittet Downloads.
7. Download Eclipse Project
Dette var et eksempel på Log4j
funktionalitet med JSF
framework.core java enterprise java Java Java 8 jsf log4j