diff --git a/.gitignore b/.gitignore index 6366460f0..9c524174a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/* *.iml target/* +*.log diff --git a/pom.xml b/pom.xml index d524faa08..9b47d1a14 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,18 @@ 4.12 test + + + org.slf4j + slf4j-api + 2.0.13 + + + + ch.qos.logback + logback-classic + 1.5.6 + diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java index 085758fbf..3fb3d393b 100644 --- a/src/main/java/mate/academy/Main.java +++ b/src/main/java/mate/academy/Main.java @@ -6,15 +6,20 @@ import mate.academy.service.AuthenticationServiceImpl; import mate.academy.service.OrderService; import mate.academy.service.OrderServiceImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class Main { + private static final Logger logger = LoggerFactory.getLogger(Main.class); + public static void main(String[] args) { AuthenticationService authenticationService = new AuthenticationServiceImpl(); User user; + try { user = authenticationService.login("bob", "1234"); } catch (AuthenticationException e) { - e.printStackTrace(); + logger.error("Authentication failed", e); return; } OrderService orderService = new OrderServiceImpl(); diff --git a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java index f9fe83b70..188cb2a8b 100644 --- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java +++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java @@ -1,23 +1,27 @@ package mate.academy.service; -import mate.academy.exception.AuthenticationException; import mate.academy.model.User; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class AuthenticationServiceImpl implements AuthenticationService { + private static final Logger logger = + LoggerFactory.getLogger(AuthenticationServiceImpl.class); + @Override - public User login(String login, String password) throws AuthenticationException { - //TODO: add corresponding log message about method login was called - User user = findByLogin(login); - if (!user.getPassword().equals(password)) { - throw new AuthenticationException("Username or password are incorrect"); + public User login(String login, String password) { + logger.trace("Enter login method: login={}", login); + if (login == null || password == null) { + logger.error("Login or password is null"); + throw new IllegalArgumentException("Login/password is null"); } - return user; - } - - private User findByLogin(String login) { - User user = new User(login, "1234"); - // this user identifier should be set by DB. We will use dummy data for this example - user.setUserId(2L); - return user; + logger.debug("Checking credentials for user={}", login); + if ("admin".equals(login) && "1234".equals(password)) { + logger.info("User logged in successfully: {}", login); + return new User(login, password); + } + logger.warn("Login failed for user={}", login); + throw new RuntimeException("Invalid credentials"); } } + diff --git a/src/main/java/mate/academy/service/OrderServiceImpl.java b/src/main/java/mate/academy/service/OrderServiceImpl.java index eeabe1555..b6fab9f21 100644 --- a/src/main/java/mate/academy/service/OrderServiceImpl.java +++ b/src/main/java/mate/academy/service/OrderServiceImpl.java @@ -4,27 +4,27 @@ import java.util.List; import mate.academy.model.Order; import mate.academy.model.Product; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class OrderServiceImpl implements OrderService { + private static final Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class); + @Override public Order completeOrder(Long userId) { - // TODO: add log message about method completeOrder was called List products = getAllProductsFromShoppingCart(userId); Order order = new Order(products, userId); - // NOTE: In production ready code this order identifier should be generated by DB - // For test purpose we simplify this and return dummy data + logger.info("Order was created successfully. OrderId: {}", order.getOrderId()); order.setOrderId(1L); return order; } private List getAllProductsFromShoppingCart(Long userId) { - // NOTE: In production ready code this method should fetch data from DB - // For test purpose we simplify this method and return dummy data Product iphone = new Product("iPhone X", BigDecimal.valueOf(1199)); Product macBook = new Product("MacBook Air 2020", BigDecimal.valueOf(1399)); Product xiaomi = new Product("Xiaomi 12", BigDecimal.valueOf(499)); List products = List.of(iphone, macBook, xiaomi); - // TODO: add log message about successful fetched data from DB + logger.info("Products were fetched successfully for userId: {}", userId); return products; } } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 000000000..874459c73 --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,22 @@ + + + + + %d{HH:mm:ss} %-5level %logger{36} - %msg%n + + + + + app.log + true + + %d %-5level %logger - %msg%n + + + + + + + + + \ No newline at end of file