Рубрики
Без рубрики

Пример интеграции JSF 2 + Log4j

– Пример интеграции JSF 2 + Log4j

В этом уроке мы покажем вам, как интегрировать платформу log4j с веб-приложением JSF 2.x. JSF использует java.util.logging , вам нужны дополнительные работы, чтобы перенаправить ведение журнала из JSF java.util.logging в log4j , с серьезным снижением производительности , убедитесь, что этот трюк используется только во время локальной разработки или отладки среды.

Просмотрите среду проекта:

  1. SLF4j 1.7.7
  2. Log4j 1.2.17 Лог4j 1.2.17
  3. JSF 2.2.7
  4. Мавен 3
  5. Кот 6
  6. Затмение Кеплера 4.3

Короче говоря, шаги по интеграции JSF и log4j.

  1. Включите регистрацию JSF в logging.properties , так как этот проект выполняется в среде Eclipse, будут использоваться JRE/lib/logging.properties Eclipse.
  2. Создайте log4j.properties и поместите его в путь к классу.
  3. Создайте прослушиватель сервлетов, установите slf4jbridgehandler , чтобы перенаправить ведение журнала с java.util.logging на log4j.

1. Каталог проектов

Просмотрите окончательную структуру проекта.

2. Зависимости проекта

Вам нужны slf4j-log4j12 и jul-to-slf4j.

	
		1.7
		2.2.7
		1.7.7
	

	

		
		
			org.slf4j
			jul-to-slf4j
			${slf4j.version}
		
 
		
		
			org.slf4j
			slf4j-log4j12
			${slf4j.version}
		

		
		
			com.sun.faces
			jsf-api
			${jsf.version}
		
		
			com.sun.faces
			jsf-impl
			${jsf.version}
		

		
		
			javax.servlet
			servlet-api
			2.5
		

	

4. Ведение журнала JSF

Поскольку этот проект выполняется в среде Eclipse, будет использоваться JRE Eclipse. Откройте logging.properties , измените уровень на FINEST и включите вход в систему javax.faces и com.sun.лица :

# Default is INFO, change it to FINNEST
#java.util.logging.ConsoleHandler.level = INFO

java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

#Add these two lines to enable JSF logging
javax.faces.level = FINEST
com.sun.faces.level = FINEST

Обратитесь к уровням java.util.logging .

5. Log4j Лог4j Регистрация

Создайте файл свойств log4j и поместите его в папку ресурсы , см. шаг № 1.

# Root logger option
log4j.rootLogger=WARN, console, file

#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=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/jsfapp.log
log4j.appender.file.MaxFileSize=5KB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

6. Сервлетконтекстлистенер

Создайте прослушиватель сервлета для установки обработчика моста, чтобы перенаправить ведение журнала JSF из java.util.properties в log4j .

package com.mkyong.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.slf4j.bridge.SLF4JBridgeHandler;

public class MyListener implements ServletContextListener {

	@Override
	public void contextInitialized(ServletContextEvent arg) {
		System.out.println("contextInitialized....");
		
		//remove the jsf root logger, avoid duplicated logging
		//try comment out this and see the different on the console
		SLF4JBridgeHandler.removeHandlersForRootLogger();
		SLF4JBridgeHandler.install();
	}

	@Override
	public void contextDestroyed(ServletContextEvent arg) {
		System.out.println("contextDestroyed....");

	}

}

Включите класс прослушивателя и другие стандартные настройки JSF.



	JavaServerFacesAndLog4j
	
	
		javax.faces.PROJECT_STAGE
		Development
	
	
		faces/index.xhtml
	
	
	
	
		
		    	com.mkyong.listener.MyListener
		  
	

	
		Faces Servlet
		javax.faces.webapp.FacesServlet
		1
	
	
		Faces Servlet
		/faces/*
	
	
		Faces Servlet
		*.jsf
	
	
		Faces Servlet
		*.faces
	
	
		Faces Servlet
		*.xhtml
	

7. Ведение журнала приложений

Простой пример, чтобы показать вам, как вести журнал log4j.

package com.mkyong.controller;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.apache.log4j.Logger;

@ManagedBean
@SessionScoped
public class PageController implements Serializable {

	private static final long serialVersionUID = 1L;

	private static final Logger logger = Logger.getLogger(PageController.class);

	public String process() {

		// logs debug
		if (logger.isDebugEnabled()) {
			logger.debug("PageController.process()");
		}

		// logs exception
		logger.error("This is Error message", new Exception("Testing"));

		return "success";
	}

}

Простой ресурс для просмотра JSF.







	

JSF 2.0 + Log4j

8. Демонстрация

Запустите веб-приложение JSF, перейдите на страницу по умолчанию и нажмите кнопку.

URL: http://localhost:8080/JavaServerFacesAndLog4j/

8.1 В консоли будут отображаться как JSF, так и журнал приложений.

Фигура: Консоль Eclipse

8.2 Как JSF, так и ведение журнала приложений будут зарегистрированы в ${tomcat}\logs\jsf app.log .

Рисунок: D:\apache-tomcat-6.0.37\logs\jsfapp.log

Скачать Исходный Код

Рекомендации

  1. Стек закончен: Почему на уровне. ХОРОШИЕ сообщения в журнале не отображаются?
  2. Накопитель: журналы JSF2 с tomcat
  3. Подключение java.util.logging к SLF4J
  4. официальная страница log4j 1.2
  5. log4j здравствуйте мировой пример
  6. Slf4j (Слф4дж): Объединение устаревших API-интерфейсов
  7. Явадок: Явадок:

Оригинал: “https://mkyong.com/jsf2/jsf-2-log4j-integration-example/”