Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Отслеживание подключаемых клиентов, log4j


Автор: Girin 14.3.2008, 11:53
Необходимо вести логирование действий в сервлете каждого подключившегося к серверу клиента. То есть записывать в лог IP адрес клиента , его действия и время . Добавил аппендер к сервлету , но пока получается вести лог общих действий 
Код
if(post.contains("description"))//если запрос на описание 
        {
         logger.info("description request");//то добавить в лог 
          ....
         }

Необходимо вести более подробную информацию. Логгер инициирализирую в методе сервлета 
Код
public void init()
    {
         BasicConfigurator.configure();
         logger.info("Entering application.");   
    }

Как получить информацию об IP  подключившихся клиентов в сервлете ? Для информации о времени надо использовать, как  я думаю, класс Date ?  

Автор: Kangaroo 14.3.2008, 13:30
Цитата(Girin @  14.3.2008,  10:53 Найти цитируемый пост)
Как получить информацию об IP  подключившихся клиентов в сервлете ?

Вот:
Цитата

 java.lang.String  getRemoteAddr()
          Returns the Internet Protocol (IP) address of the client that sent the request.
 java.lang.String  getRemoteHost()
          Returns the fully qualified name of the client that sent the request.




Цитата(Girin @  14.3.2008,  10:53 Найти цитируемый пост)
Для информации о времени надо использовать, как  я думаю, класс Date ?  

или Calendar.
new Date() or Calendar.getInstance вернут текущее время.

А вообще такое делается не в каждом сервлете, а фильтром. Тогда у вас этот код будет в одном месте, а не разбросан по сервлетам.

Автор: Zamuta 14.3.2008, 20:03
Girin, 

Код

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        doBeforeProcessing(request, response);       
        try {
            MDC.put("ipAddress", request.getRemoteAddr());
            chain.doFilter(request, response);
        } catch (Throwable t) {           
            log.fatal(t);
        } finally {
            MDC.remove("ipAddress");
        }
        doAfterProcessing(request, response);        
    }


Код

log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileout.File=log4j.OUT
log4j.appender.fileout.DatePattern='.'yyyy-MM-dd
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.conversionPattern=->[%d{dd:MM:yy HH:mm:ss,SSS}] | [%5p] [%t] [%M] [%L] [RemoteIP: %.15X{ipAddress}] %n

Автор: Girin 14.3.2008, 20:24
 Kangaroo,  Zamuta  благодарю за помощь . То что нужно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)