我想使用Log4j创建日志文件。我想创建这样的日志。
“ 2018-10-31 21:05:51,481-调试-u单击按钮”
我下载了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进行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>
答案 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 前的点。