From 97312852cc640b2692992e5ecbe30945a66a2b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martyna=20Sza=C5=82a=C5=84ska?= Date: Sat, 11 Apr 2026 22:19:52 +0200 Subject: [PATCH 1/3] Complete task: add logger to main class --- .gitignore | 1 + pom.xml | 11 +++++++++ src/main/java/mate/academy/Main.java | 7 +++++- .../service/AuthenticationServiceImpl.java | 7 +++++- .../academy/service/OrderServiceImpl.java | 9 ++++++-- src/main/resources/log4j2.xml | 23 +++++++++++++++++++ 6 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/log4j2.xml diff --git a/.gitignore b/.gitignore index 6366460f0..cf6776370 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/* *.iml target/* +logs/ diff --git a/pom.xml b/pom.xml index d524faa08..2b32804aa 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,17 @@ 4.12 test + + + org.apache.logging.log4j + log4j-core + 2.24.3 + + + org.apache.logging.log4j + log4j-api + 2.24.3 + diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java index 085758fbf..b3229a2b1 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.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(e.getMessage()); 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..e4067ce4e 100644 --- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java +++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java @@ -2,11 +2,16 @@ 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("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 eeabe1555..26bcc76c2 100644 --- a/src/main/java/mate/academy/service/OrderServiceImpl.java +++ b/src/main/java/mate/academy/service/OrderServiceImpl.java @@ -4,11 +4,16 @@ 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("Order is complete"); List products = getAllProductsFromShoppingCart(userId); Order order = new Order(products, userId); // NOTE: In production ready code this order identifier should be generated by DB @@ -24,7 +29,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); - // TODO: add log message about successful fetched data from DB + logger.info("All products in shopping cart"); return products; } } diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 000000000..0742f74e4 --- /dev/null +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 909a8b873c1eea070ed6a837b60b15b6103eb256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martyna=20Sza=C5=82a=C5=84ska?= Date: Sun, 12 Apr 2026 01:50:28 +0200 Subject: [PATCH 2/3] Add informative log messages with context parametrs --- .../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 e4067ce4e..6eb3a5d7a 100644 --- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java +++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java @@ -11,7 +11,7 @@ public class AuthenticationServiceImpl implements AuthenticationService { @Override public User login(String login, String password) throws AuthenticationException { - logger.info("login"); + logger.info("Login called={}",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 26bcc76c2..99438b8d5 100644 --- a/src/main/java/mate/academy/service/OrderServiceImpl.java +++ b/src/main/java/mate/academy/service/OrderServiceImpl.java @@ -13,7 +13,7 @@ public class OrderServiceImpl implements OrderService { @Override public Order completeOrder(Long userId) { - logger.info("Order is complete"); + logger.info("Order completed for userId={}",userId); List products = getAllProductsFromShoppingCart(userId); Order order = new Order(products, userId); // NOTE: In production ready code this order identifier should be generated by DB @@ -29,7 +29,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("All products in shopping cart"); + logger.info("All products in shopping cart for userId={}",userId); return products; } } From bdfdc1ffaa8f4f47b3d3f4313658bfbb5f1a5c7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martyna=20Sza=C5=82a=C5=84ska?= Date: Sun, 12 Apr 2026 02:11:05 +0200 Subject: [PATCH 3/3] Fix log messages: add context parameters and correct log --- src/main/java/mate/academy/Main.java | 5 +++-- .../mate/academy/service/AuthenticationServiceImpl.java | 2 +- src/main/java/mate/academy/service/OrderServiceImpl.java | 6 ++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java index b3229a2b1..262169bb0 100644 --- a/src/main/java/mate/academy/Main.java +++ b/src/main/java/mate/academy/Main.java @@ -16,10 +16,11 @@ public class Main { public static void main(String[] args) { AuthenticationService authenticationService = new AuthenticationServiceImpl(); User user; + String login = "bob"; try { - user = authenticationService.login("bob", "1234"); + user = authenticationService.login(login, "1234"); } catch (AuthenticationException e) { - logger.error(e.getMessage()); + logger.error("Failed to login={}", login,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 6eb3a5d7a..cff824af4 100644 --- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java +++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java @@ -11,7 +11,7 @@ public class AuthenticationServiceImpl implements AuthenticationService { @Override public User login(String login, String password) throws AuthenticationException { - logger.info("Login called={}",login); + logger.debug("Login attempt. Parms: login={}",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 99438b8d5..d570356ba 100644 --- a/src/main/java/mate/academy/service/OrderServiceImpl.java +++ b/src/main/java/mate/academy/service/OrderServiceImpl.java @@ -13,12 +13,13 @@ public class OrderServiceImpl implements OrderService { @Override public Order completeOrder(Long userId) { - logger.info("Order completed for userId={}",userId); 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); + logger.info("Order completed for userId={}, orderId={}, products size={}", + userId, order.getOrderId(), products.size()); return order; } @@ -29,7 +30,8 @@ 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("All products in shopping cart for userId={}",userId); + logger.info("All products in shopping cart for userId={}, products size={}", + userId, products.size()); return products; } }