From bb8d9cb75be74004626d0ad7be0005844be51011 Mon Sep 17 00:00:00 2001 From: Jack Tyler Date: Wed, 1 Apr 2026 15:38:48 +0300 Subject: [PATCH 1/2] Implement logger --- .gitignore | 1 + pom.xml | 7 ++++++ src/main/java/mate/academy/Main.java | 6 ++++- .../service/AuthenticationServiceImpl.java | 7 ++++-- .../academy/service/OrderServiceImpl.java | 12 +++++----- src/main/resources/log4j2.xml | 22 +++++++++++++++++++ 6 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/log4j2.xml diff --git a/.gitignore b/.gitignore index 6366460f0..3abc7b8b4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/* *.iml target/* +logs/app.log diff --git a/pom.xml b/pom.xml index d524faa08..c80bce9b8 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,13 @@ 4.12 test + + + org.apache.logging.log4j + log4j-core + 2.25.3 + compile + diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java index 085758fbf..e45de245e 100644 --- a/src/main/java/mate/academy/Main.java +++ b/src/main/java/mate/academy/Main.java @@ -6,15 +6,19 @@ import mate.academy.service.AuthenticationServiceImpl; import mate.academy.service.OrderService; import mate.academy.service.OrderServiceImpl; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class Main { + private static final Logger logger = LogManager.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("The following error has occurred:", 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..c31a91596 100644 --- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java +++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java @@ -2,11 +2,15 @@ import mate.academy.exception.AuthenticationException; import mate.academy.model.User; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class AuthenticationServiceImpl implements AuthenticationService { + private static final Logger logger = LogManager.getLogger(AuthenticationServiceImpl.class); + @Override public User login(String login, String password) throws AuthenticationException { - //TODO: add corresponding log message about method login was called + logger.info("Method login has been called..."); User user = findByLogin(login); if (!user.getPassword().equals(password)) { throw new AuthenticationException("Username or password are incorrect"); @@ -16,7 +20,6 @@ public User login(String login, String password) throws AuthenticationException 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; } diff --git a/src/main/java/mate/academy/service/OrderServiceImpl.java b/src/main/java/mate/academy/service/OrderServiceImpl.java index eeabe1555..f773b4498 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.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class OrderServiceImpl implements OrderService { + private static final Logger logger = LogManager.getLogger(OrderServiceImpl.class); + @Override public Order completeOrder(Long userId) { - // TODO: add log message about method completeOrder was called + logger.info("Calling completeOrder method..."); 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 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("Successfully fetched products from DB"); return products; } } diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 000000000..1fe5f5d28 --- /dev/null +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,22 @@ + + + + + + + + + %d %p %c %m%n + + + + + + + + + + + + + From 9266a8bc11dc46a199fadd56ee51d0c8a165f3c7 Mon Sep 17 00:00:00 2001 From: Jack Tyler Date: Wed, 1 Apr 2026 15:46:27 +0300 Subject: [PATCH 2/2] fixups on review --- .../java/mate/academy/service/AuthenticationServiceImpl.java | 2 +- src/main/java/mate/academy/service/OrderServiceImpl.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java index c31a91596..ffa84c36e 100644 --- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java +++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java @@ -10,7 +10,7 @@ public class AuthenticationServiceImpl implements AuthenticationService { @Override public User login(String login, String password) throws AuthenticationException { - logger.info("Method login has been called..."); + logger.info("Executing login method for user {}", login); User user = findByLogin(login); if (!user.getPassword().equals(password)) { throw new AuthenticationException("Username or password are incorrect"); diff --git a/src/main/java/mate/academy/service/OrderServiceImpl.java b/src/main/java/mate/academy/service/OrderServiceImpl.java index f773b4498..b38cd7fae 100644 --- a/src/main/java/mate/academy/service/OrderServiceImpl.java +++ b/src/main/java/mate/academy/service/OrderServiceImpl.java @@ -12,7 +12,7 @@ public class OrderServiceImpl implements OrderService { @Override public Order completeOrder(Long userId) { - logger.info("Calling completeOrder method..."); + logger.info("Executing completeOrder method with userId of {}", userId); List products = getAllProductsFromShoppingCart(userId); Order order = new Order(products, userId); order.setOrderId(1L); @@ -24,7 +24,7 @@ private List getAllProductsFromShoppingCart(Long userId) { 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); - logger.info("Successfully fetched products from DB"); + logger.info("Successfully fetched products from DB for user {}", userId); return products; } }