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

时间:2018-11-13 05:31:54

标签: java eclipse log4j tomcat8

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

“ 2018-10-31 21:05:51,481-调试-u单击按钮”

我下载了log4j-2.3-bin

添加文件log4j-api-2.3.jarlog4j-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进行Web开发。

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 :(得分:1)

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

public class JspLoggerClass {}

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

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

实例化并使用:

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

已编辑

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

已编辑2

好的,我的错,您使用的是2.3,即 log4j 2 。 因此,在您的项目/类路径中包含 log4j-core log4j-api jars。导入 org.apache.logging.log4j.LogManager org.apache.logging.log4j.Logger 。无需创建虚拟类,您可以使用以下字符串名称实例化记录器:

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

现在使用记录器:

logger.info("...");

对不起,我无法发表评论。

我认为您的 log4j.xml 中有错误,请删除 PatternLayout 前的