Как создать файл журнала, используя Log4j для страницы JSP - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу создать файл журнала, используя Log4j. Я хочу создать такие журналы.

"2018-10-31 21: 05: 51,481 - ОТЛАДКА - вы нажимаете кнопку"

Я скачал log4j-2.3-bin.

Добавлены файлы log4j-api-2.3.jar и log4j-api-2.3.jar, нажали «путь сборки» и создайте log4j.xml.

<?xml version="1.0" encoding="UTF-8"?>
  <Configuration status="DEBUG">
   <Appenders>
     <Console name="Console" target="SYSTEM_OUT">
       <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
     </Console>
     <File name="MyFile" fileName="all.log" immediateFlush="false" append="false">
       <.PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
     </File>
   </Appenders>
   <Loggers>
     <Root level="debug">
       <AppenderRef ref="Console" />
       <AppenderRef ref="MyFile"/>
     </Root>
   </Loggers>
 </Configuration>

Я запутался и не совсем понимаю, как закончить.

Я использую IDE eclipse для веб-разработки с tomcat 8.5.

MyFile.jps

<form  method="POST">
    <input  type="submit" name="Clickme" value ="buttonclick" >
        <%
            String button1Click = request.getParameter("buttonclick");
            if(button1Click != null && button1Click.equals("buttonclick")){
        %>
            <p> click </p>
        <%  
            }
        %>
</form>

1 Ответ

0 голосов
/ 13 ноября 2018

Создайте фиктивный класс, он нужен вам для создания экземпляра логгера:

public class JspLoggerClass {}

Импортируйте логгер и класс в ваш jsp:

<%@ page import="org.apache.log4j.Logger, JspLoggerClass;" %>

Создайте и используйте:

  <%
    Logger logger = Logger.getLogger(JspLoggerClass.class);
    ...
    logger.info("message ...");
  %>

РЕДАКТИРОВАНИЕ

Я вас не очень хорошо понимаю.Используя log4j вы можете писать только из кода Java.Что для в JSP вы используете регистратор только в скриптлете.Если вы хотите регистрировать событие click, то есть javascript, поэтому единственным регистратором является console.log ("...") , но он печатается на консоли браузера.Когда вы нажимаете кнопку, нет способа получить событие в jsp скриптлете, этот код выполняется на сервере.Что вы можете сделать, это отправить форму, перейти к сервлету на своем сервере и там зарегистрировать событие.

EDITED 2

OK,по моей вине вы используете 2.3 и это log4j 2 .Поэтому включите в ваш проект / classpath log4j-core и log4j-api jar.Импорт org.apache.logging.log4j.LogManager и org.apache.logging.log4j.Logger .Нет необходимости создавать фиктивный класс, вы можете создать экземпляр регистратора с таким именем строки:

Logger logger = LogManager.getLogger("my jsp");

А теперь просто используйте регистратор:

logger.info("...");

Извините, я не могу оставлять комментарии.

Я думаю, что у вас есть ошибка в log4j.xml , удалите точку до PatternLayout .

...