如何使用 Log4j 为 jsp 页面创建日志文件

How create log file using Log4j for jsp page

我想使用 Log4j 创建日志文件。我想创建这样的日志。

"2018-10-31 21:05:51,481 - 调试 - 你点击按钮"

我下载了log4j-2.3-bin

已添加文件 log4j-api-2.3.jarlog4j-api-2.3.jar,单击 "build path" 并创建 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>

创建一个虚拟对象 class,您需要它来实例化记录器:

public class JspLoggerClass {}

在您的 jsp 中导入记录器和 class:

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

实例化并使用:

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

已编辑

我不是很了解你。使用 log4j,您只能从 java 代码编写。在 jsp 中,您仅在 scriptlet 中使用记录器。如果要记录点击事件,即 javascript,那么唯一的记录器是 console.log("...") 但这会打印在浏览器控制台。 当您单击按钮时,无法在 jsp scriptlet 中获取事件,此代码在服务器上执行。您可以做的是提交表单,转到您服务器上的一个 servlet,然后在那里 记录事件。

已编辑 2

好吧,我的错,你使用的是 2.3,那就是 log4j 2。 因此,在您的项目中包含 classpath log4j-corelog4j-api 罐子。导入 org.apache.logging.log4j.LogManagerorg.apache.logging.log4j.Logger。无需创建虚拟 class,您可以使用这样的字符串名称实例化记录器:

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

现在只需使用记录器:

logger.info("...");

抱歉,我无法 post 发表评论。

我认为你的 log4j.xml 有误,删除 PatternLayout[ 之前的 dot =51=].