如何使用 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.jar
和 log4j-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-core 和 log4j-api 罐子。导入 org.apache.logging.log4j.LogManager 和 org.apache.logging.log4j.Logger。无需创建虚拟 class,您可以使用这样的字符串名称实例化记录器:
Logger logger = LogManager.getLogger("my jsp");
现在只需使用记录器:
logger.info("...");
抱歉,我无法 post 发表评论。
我认为你的 log4j.xml 有误,删除 PatternLayout[ 之前的 dot =51=].
我想使用 Log4j 创建日志文件。我想创建这样的日志。
"2018-10-31 21:05:51,481 - 调试 - 你点击按钮"
我下载了log4j-2.3-bin
。
已添加文件 log4j-api-2.3.jar
和 log4j-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-core 和 log4j-api 罐子。导入 org.apache.logging.log4j.LogManager 和 org.apache.logging.log4j.Logger。无需创建虚拟 class,您可以使用这样的字符串名称实例化记录器:
Logger logger = LogManager.getLogger("my jsp");
现在只需使用记录器:
logger.info("...");
抱歉,我无法 post 发表评论。
我认为你的 log4j.xml 有误,删除 PatternLayout[ 之前的 dot =51=].