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>
|
<error-code>400</error-code>
|
||||||
<location>/WEB-INF/jsp/error400.jsp</location>
|
<location>/WEB-INF/jsp/error400.jsp</location>
|
||||||
</error-page>
|
</error-page>
|
||||||
|
<error-page>
|
||||||
|
<exception-type>java.lang.Exception</exception-type>
|
||||||
|
<location>/WEB-INF/jsp/error.jsp</location>
|
||||||
|
</error-page>
|
||||||
</web-app>
|
</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.HttpServlet;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
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.ProfileGetDto;
|
||||||
import ru.charm.back.dto.ProfileUpdateDto;
|
import ru.charm.back.dto.ProfileUpdateDto;
|
||||||
import ru.charm.back.mapper.RequestToProfileUpdateDtoMapper;
|
import ru.charm.back.mapper.RequestToProfileUpdateDtoMapper;
|
||||||
@ -23,6 +26,7 @@ import static jakarta.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
|||||||
public class EmailController extends HttpServlet {
|
public class EmailController extends HttpServlet {
|
||||||
private final ProfileService service = ProfileService.getInstance();
|
private final ProfileService service = ProfileService.getInstance();
|
||||||
private final RequestToProfileUpdateDtoMapper requestToProfileUpdateDtoMapper = RequestToProfileUpdateDtoMapper.getInstance();
|
private final RequestToProfileUpdateDtoMapper requestToProfileUpdateDtoMapper = RequestToProfileUpdateDtoMapper.getInstance();
|
||||||
|
public static final Logger logger = LoggerFactory.getLogger(EmailController.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
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());
|
ProfileUpdateDto dto = requestToProfileUpdateDtoMapper.map(req, new ProfileUpdateDto());
|
||||||
try {
|
try {
|
||||||
service.update(dto);
|
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()));
|
resp.sendRedirect(String.format("/profile?id=%s", dto.getId()));
|
||||||
} catch (DuplicateEmailException e) {
|
} catch (DuplicateEmailException e) {
|
||||||
resp.sendError(SC_BAD_REQUEST);
|
resp.sendError(SC_BAD_REQUEST);
|
||||||
|
|||||||
@ -5,15 +5,47 @@ import jakarta.servlet.annotation.WebServlet;
|
|||||||
import jakarta.servlet.http.HttpServlet;
|
import jakarta.servlet.http.HttpServlet;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import ru.charm.back.dto.ProfileGetDto;
|
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;
|
import java.io.IOException;
|
||||||
|
|
||||||
@WebServlet("/registration")
|
@WebServlet("/registration")
|
||||||
public class RegistrationController extends HttpServlet {
|
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
|
@Override
|
||||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||||
req.setAttribute("profile", new ProfileGetDto());
|
req.getRequestDispatcher("/WEB-INF/jsp/registration.jsp").forward(req, resp);
|
||||||
req.getRequestDispatcher("/WEB-INF/jsp/profile.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