feat: add logger
This commit is contained in:
parent
9b040ba885
commit
59b435b27b
BIN
lib/slf4j-api-2.0.17.jar
Normal file
BIN
lib/slf4j-api-2.0.17.jar
Normal file
Binary file not shown.
BIN
lib/slf4j-simple-2.0.17.jar
Normal file
BIN
lib/slf4j-simple-2.0.17.jar
Normal file
Binary file not shown.
15
resources/WEB-INF/jsp/error.jsp
Normal file
15
resources/WEB-INF/jsp/error.jsp
Normal file
@ -0,0 +1,15 @@
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Charm Unexpected Error</title>
|
||||
<%@ include file="style.html" %>
|
||||
</head>
|
||||
<body>
|
||||
<%@ include file="header.jsp" %>
|
||||
<div>
|
||||
<h3 style="color: red">500 - ${requestScope.wordBundle.getWord("unexpected-error")}</h3>
|
||||
</div>
|
||||
<%@ include file="footer.jsp" %>
|
||||
</body>
|
||||
</html>
|
||||
@ -29,4 +29,8 @@
|
||||
<error-code>400</error-code>
|
||||
<location>/WEB-INF/jsp/error400.jsp</location>
|
||||
</error-page>
|
||||
<error-page>
|
||||
<exception-type>java.lang.Exception</exception-type>
|
||||
<location>/WEB-INF/jsp/error.jsp</location>
|
||||
</error-page>
|
||||
</web-app>
|
||||
|
||||
7
resources/simplelogger.properties
Normal file
7
resources/simplelogger.properties
Normal file
@ -0,0 +1,7 @@
|
||||
org.slf4j.simpleLogger.defaultLogLevel=info
|
||||
org.slf4j.simpleLogger.showDateTime=true
|
||||
org.slf4j.simpleLogger.dateTimeFormat=dd-MM-yyyy HH:mm:ss:SSS
|
||||
org.slf4j.simpleLogger.logFile=System.out
|
||||
org.slf4j.simpleLogger.levelInBrackets=true
|
||||
org.slf4j.simpleLogger.showLogName=true
|
||||
org.slf4j.simpleLogger.showShortLogName=false
|
||||
@ -5,6 +5,9 @@ import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.charm.back.controller.filter.ErrorFilter;
|
||||
import ru.charm.back.dto.ProfileGetDto;
|
||||
import ru.charm.back.dto.ProfileUpdateDto;
|
||||
import ru.charm.back.mapper.RequestToProfileUpdateDtoMapper;
|
||||
@ -23,6 +26,7 @@ import static jakarta.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
public class EmailController extends HttpServlet {
|
||||
private final ProfileService service = ProfileService.getInstance();
|
||||
private final RequestToProfileUpdateDtoMapper requestToProfileUpdateDtoMapper = RequestToProfileUpdateDtoMapper.getInstance();
|
||||
public static final Logger logger = LoggerFactory.getLogger(EmailController.class);
|
||||
|
||||
@Override
|
||||
protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
@ -44,6 +48,7 @@ public class EmailController extends HttpServlet {
|
||||
ProfileUpdateDto dto = requestToProfileUpdateDtoMapper.map(req, new ProfileUpdateDto());
|
||||
try {
|
||||
service.update(dto);
|
||||
logger.info("Email {} was changed in profile with id = {}", dto.getEmail(), dto.getId());
|
||||
resp.sendRedirect(String.format("/profile?id=%s", dto.getId()));
|
||||
} catch (DuplicateEmailException e) {
|
||||
resp.sendError(SC_BAD_REQUEST);
|
||||
|
||||
@ -5,15 +5,47 @@ import jakarta.servlet.annotation.WebServlet;
|
||||
import jakarta.servlet.http.HttpServlet;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.charm.back.dto.ProfileGetDto;
|
||||
import ru.charm.back.dto.RegistrationDto;
|
||||
import ru.charm.back.mapper.RequestToRegistrationDtoMapper;
|
||||
import ru.charm.back.service.ProfileService;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@WebServlet("/registration")
|
||||
public class RegistrationController extends HttpServlet {
|
||||
private final ProfileService service = ProfileService.getInstance();
|
||||
|
||||
private final RequestToRegistrationDtoMapper requestToRegistrationDtoMapper = RequestToRegistrationDtoMapper.getInstance();
|
||||
public static final Logger logger = LoggerFactory.getLogger(RegistrationController.class);
|
||||
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
req.setAttribute("profile", new ProfileGetDto());
|
||||
req.getRequestDispatcher("/WEB-INF/jsp/profile.jsp").forward(req, resp);
|
||||
req.getRequestDispatcher("/WEB-INF/jsp/registration.jsp").forward(req, resp);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
|
||||
RegistrationDto dto = requestToRegistrationDtoMapper.map(req);
|
||||
Long id = service.save(dto);
|
||||
logger.info("Profile with the email address {} has been registered with id {}", dto.getEmail(), id);
|
||||
resp.sendRedirect(String.format("/profile?id=%s", id));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws IOException {
|
||||
String sId = req.getParameter("id");
|
||||
boolean success = false;
|
||||
if (!sId.isBlank()) {
|
||||
success = service.delete(Long.parseLong(sId));
|
||||
}
|
||||
resp.setStatus(HttpServletResponse.SC_NO_CONTENT);
|
||||
if (success) {
|
||||
logger.info("Profile with id {} has been deleted", sId);
|
||||
}
|
||||
resp.sendRedirect("/registration");
|
||||
}
|
||||
}
|
||||
|
||||
33
src/ru/charm/back/controller/filter/ErrorFilter.java
Normal file
33
src/ru/charm/back/controller/filter/ErrorFilter.java
Normal file
@ -0,0 +1,33 @@
|
||||
package ru.charm.back.controller.filter;
|
||||
|
||||
import jakarta.servlet.*;
|
||||
import jakarta.servlet.annotation.WebFilter;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static jakarta.servlet.RequestDispatcher.ERROR_EXCEPTION;
|
||||
|
||||
@WebFilter(value = "/*", dispatcherTypes = DispatcherType.ERROR)
|
||||
public class ErrorFilter implements Filter {
|
||||
public static final Logger logger = LoggerFactory.getLogger(ErrorFilter.class);
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
||||
HttpServletRequest req = (HttpServletRequest) servletRequest;
|
||||
HttpServletResponse res = (HttpServletResponse) servletResponse;
|
||||
|
||||
Throwable trowable = (Throwable) req.getAttribute(ERROR_EXCEPTION);
|
||||
|
||||
if (res.getStatus() >= 500) {
|
||||
logger.error("Error 500", trowable);
|
||||
} else {
|
||||
logger.warn("Exception code {}", res.getStatus());
|
||||
}
|
||||
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user