我试图创建一个简单的登录使用Apache Tomcat和Java。为此,我想记录到两个不同的文件。
@WebServlet("/login")
public class ServletLogin extends HttpServlet {
private static final Logger logger = LogManager.getLogger(ServletLogin.class);
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username != null && !username.isEmpty() && password != null && !password.isEmpty()) {
if (login(WebServletContextListener.db1, username, password)) {
HttpSession session = request.getSession();
session.setAttribute("username", username);
session.setAttribute("loggedIn", true);
logger.info("Login succeeded for user: {}", username);
logger.debug("Further information...");
response.sendRedirect("jsp/management.jsp");
return;
} else {
logger.info("Login failed for user: {}", username);
logger.debug("Further information...");
}
}
response.sendRedirect("jsp/login.jsp?error=1");
}
这是相应的log4j2.xml文件:
<Configuration status="WARN">
<Appenders>
<!-- Define a File appender -->
<File name="LogHistoryFile" fileName="logs\history.${date:yyyy-MM-dd}.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</File>
<File name="LogDebugFile" fileName="logs\debug.${date:yyyy-MM-dd}.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</File>
</Appenders>
<Loggers>
<!-- Reference a File appender -->
<Root level="info">
<AppenderRef ref="LogHistoryFile" />
</Root>
</Loggers>
</Configuration>
不幸的是,当向log4j2.xml添加第二个appender时,没有任何东西会被记录。
<Root level="debug">
<AppenderRef ref="LogDebugFile" />
</Root>
也许你们中有人知道我在处理什么问题,甚至有一个以前讨论过这个主题的线索。
谢谢你的帮助!
1条答案
按热度按时间gv8xihay1#
我不是100%确定你想归档什么。但据我所知,你会过滤不同文件中的信息。
如果是,您可以为不同的主机添加
ThresholdFilter
: