From 14543366745f5ffac550ecaf95ef33fd14d37f69 Mon Sep 17 00:00:00 2001 From: Slawomir Pacek Date: Tue, 26 May 2026 16:22:57 +0200 Subject: [PATCH 1/6] logger --- src/main/resources/log4j2.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/log4j2.xml diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 000000000..e69de29bb From 851ed91dd3925511d18bfa52f1e3e6b0f3f2d095 Mon Sep 17 00:00:00 2001 From: Slawomir Pacek Date: Tue, 26 May 2026 16:23:39 +0200 Subject: [PATCH 2/6] logger --- pom.xml | 12 ++++++++++++ src/main/resources/log4j2.xml | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/pom.xml b/pom.xml index d524faa08..c6cec2405 100644 --- a/pom.xml +++ b/pom.xml @@ -15,6 +15,7 @@ https://raw.githubusercontent.com/mate-academy/style-guides/master/java/checkstyle.xml + 2.20.0 @@ -24,6 +25,17 @@ 4.12 test + + org.apache.logging.log4j + log4j-api + ${log4j.version} + + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index e69de29bb..317e9b0e7 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 0405aea78f5109e9f92a764b75f3a6fd87e5e8d1 Mon Sep 17 00:00:00 2001 From: Slawomir Pacek Date: Wed, 27 May 2026 16:16:59 +0200 Subject: [PATCH 3/6] logger2 --- .gitignore | 2 ++ src/main/java/mate/academy/Main.java | 16 +++++++++++-- src/main/java/mate/academy/model/Order.java | 4 ++++ src/main/java/mate/academy/model/Product.java | 4 ++++ src/main/java/mate/academy/model/User.java | 5 ++++ .../academy/service/OrderServiceImpl.java | 23 +++++++++++++++++-- 6 files changed, 50 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 6366460f0..76faf9b5d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .idea/* *.iml target/* +logs/ +*.log diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java index 085758fbf..31ef6eb13 100644 --- a/src/main/java/mate/academy/Main.java +++ b/src/main/java/mate/academy/Main.java @@ -6,18 +6,30 @@ 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(); + AuthenticationService authenticationService = + new AuthenticationServiceImpl(); + User user; + try { user = authenticationService.login("bob", "1234"); } catch (AuthenticationException e) { - e.printStackTrace(); + logger.error("Authentication failed for user bob", e); return; } + OrderService orderService = new OrderServiceImpl(); + orderService.completeOrder(user.getUserId()); + + logger.info("Program finished successfully"); } } diff --git a/src/main/java/mate/academy/model/Order.java b/src/main/java/mate/academy/model/Order.java index 0e71923ec..20ba58a83 100644 --- a/src/main/java/mate/academy/model/Order.java +++ b/src/main/java/mate/academy/model/Order.java @@ -1,8 +1,12 @@ package mate.academy.model; import java.util.List; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class Order { + private static final Logger logger = + LogManager.getLogger(Order.class); private Long orderId; private List products; private Long userId; // the identifier of user who complete the order diff --git a/src/main/java/mate/academy/model/Product.java b/src/main/java/mate/academy/model/Product.java index 520b40798..29dc67ca5 100644 --- a/src/main/java/mate/academy/model/Product.java +++ b/src/main/java/mate/academy/model/Product.java @@ -1,8 +1,12 @@ package mate.academy.model; import java.math.BigDecimal; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class Product { + private static final Logger logger = + LogManager.getLogger(Product.class); private String title; private BigDecimal price; diff --git a/src/main/java/mate/academy/model/User.java b/src/main/java/mate/academy/model/User.java index b72b989c8..f4d897e91 100644 --- a/src/main/java/mate/academy/model/User.java +++ b/src/main/java/mate/academy/model/User.java @@ -1,6 +1,11 @@ package mate.academy.model; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + public class User { + private static final Logger logger = + LogManager.getLogger(User.class); private Long userId; private String login; private String password; diff --git a/src/main/java/mate/academy/service/OrderServiceImpl.java b/src/main/java/mate/academy/service/OrderServiceImpl.java index eeabe1555..6e071d3ae 100644 --- a/src/main/java/mate/academy/service/OrderServiceImpl.java +++ b/src/main/java/mate/academy/service/OrderServiceImpl.java @@ -4,27 +4,46 @@ 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("Method completeOrder was called. User id: {}", 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 {} was completed for user {}", + order.getOrderId(), userId); + return order; } private List getAllProductsFromShoppingCart(Long userId) { + logger.info("Fetching products from shopping cart for user {}", + 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 for user {}", + products.size(), userId); + return products; } } From 8ddfd9b58c00e0967a2ed1e2686adeb20a3dc687 Mon Sep 17 00:00:00 2001 From: Slawomir Pacek Date: Thu, 28 May 2026 09:40:27 +0200 Subject: [PATCH 4/6] logger3 --- src/main/java/mate/academy/model/Order.java | 4 ---- src/main/java/mate/academy/model/Product.java | 4 ---- src/main/java/mate/academy/model/User.java | 5 ----- .../academy/service/AuthenticationServiceImpl.java | 12 +++++++++++- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/java/mate/academy/model/Order.java b/src/main/java/mate/academy/model/Order.java index 20ba58a83..0e71923ec 100644 --- a/src/main/java/mate/academy/model/Order.java +++ b/src/main/java/mate/academy/model/Order.java @@ -1,12 +1,8 @@ package mate.academy.model; import java.util.List; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; public class Order { - private static final Logger logger = - LogManager.getLogger(Order.class); private Long orderId; private List products; private Long userId; // the identifier of user who complete the order diff --git a/src/main/java/mate/academy/model/Product.java b/src/main/java/mate/academy/model/Product.java index 29dc67ca5..520b40798 100644 --- a/src/main/java/mate/academy/model/Product.java +++ b/src/main/java/mate/academy/model/Product.java @@ -1,12 +1,8 @@ package mate.academy.model; import java.math.BigDecimal; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; public class Product { - private static final Logger logger = - LogManager.getLogger(Product.class); private String title; private BigDecimal price; diff --git a/src/main/java/mate/academy/model/User.java b/src/main/java/mate/academy/model/User.java index f4d897e91..b72b989c8 100644 --- a/src/main/java/mate/academy/model/User.java +++ b/src/main/java/mate/academy/model/User.java @@ -1,11 +1,6 @@ package mate.academy.model; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - public class User { - private static final Logger logger = - LogManager.getLogger(User.class); private Long userId; private String login; private String password; diff --git a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java index f9fe83b70..e9a13855a 100644 --- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java +++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java @@ -2,15 +2,25 @@ 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 method was called for user {}", login); + User user = findByLogin(login); + if (!user.getPassword().equals(password)) { + logger.error("Authentication failed for user {}", login); throw new AuthenticationException("Username or password are incorrect"); } + + logger.info("User {} logged in successfully", login); return user; } From 3382ddad42b7d3d36f538c7104f6c192ca1bd76e Mon Sep 17 00:00:00 2001 From: Slawomir Pacek Date: Thu, 28 May 2026 09:48:41 +0200 Subject: [PATCH 5/6] logger4 --- src/main/java/mate/academy/service/OrderServiceImpl.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/mate/academy/service/OrderServiceImpl.java b/src/main/java/mate/academy/service/OrderServiceImpl.java index 6e071d3ae..0f7aca537 100644 --- a/src/main/java/mate/academy/service/OrderServiceImpl.java +++ b/src/main/java/mate/academy/service/OrderServiceImpl.java @@ -19,8 +19,6 @@ public Order completeOrder(Long 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 {} was completed for user {}", @@ -33,8 +31,6 @@ private List getAllProductsFromShoppingCart(Long userId) { logger.info("Fetching products from shopping cart for user {}", 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)); From ad380fa4a3881d9a3c26cc3ef0ffe5567add8c1f Mon Sep 17 00:00:00 2001 From: Slawomir Pacek Date: Thu, 28 May 2026 12:18:09 +0200 Subject: [PATCH 6/6] logger5 --- src/main/java/mate/academy/Main.java | 6 ++++-- .../academy/service/AuthenticationServiceImpl.java | 7 ++++--- .../mate/academy/service/OrderServiceImpl.java | 14 ++++---------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/main/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java index 31ef6eb13..0305bb97b 100644 --- a/src/main/java/mate/academy/Main.java +++ b/src/main/java/mate/academy/Main.java @@ -19,10 +19,12 @@ public static void main(String[] args) { User user; + String login = "bob"; + try { - user = authenticationService.login("bob", "1234"); + user = authenticationService.login(login, "1234"); } catch (AuthenticationException e) { - logger.error("Authentication failed for user bob", e); + logger.error("Authentication failed for user with login={}", login, e); return; } diff --git a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java index e9a13855a..5bdfc49b1 100644 --- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java +++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java @@ -11,16 +11,17 @@ public class AuthenticationServiceImpl implements AuthenticationService { @Override public User login(String login, String password) throws AuthenticationException { - logger.info("Login method was called for user {}", login); + logger.debug("Method login was called. Params: login={}", login); User user = findByLogin(login); if (!user.getPassword().equals(password)) { - logger.error("Authentication failed for user {}", login); + logger.warn("Authentication failed for user {}", login); throw new AuthenticationException("Username or password are incorrect"); } - logger.info("User {} logged in successfully", login); + logger.info("User logged in successfully. Params: login={}, userId={}", + login, user.getUserId()); return user; } diff --git a/src/main/java/mate/academy/service/OrderServiceImpl.java b/src/main/java/mate/academy/service/OrderServiceImpl.java index 0f7aca537..f76977dd7 100644 --- a/src/main/java/mate/academy/service/OrderServiceImpl.java +++ b/src/main/java/mate/academy/service/OrderServiceImpl.java @@ -13,17 +13,11 @@ public class OrderServiceImpl implements OrderService { @Override public Order completeOrder(Long userId) { - logger.info("Method completeOrder was called. User id: {}", userId); - + logger.info("Method completeOrder was called. Params: userId={}", userId); List products = getAllProductsFromShoppingCart(userId); - Order order = new Order(products, userId); - order.setOrderId(1L); - - logger.info("Order {} was completed for user {}", - order.getOrderId(), userId); - + logger.info("Order {} was completed for user {}", order.getOrderId(), userId); return order; } @@ -37,8 +31,8 @@ private List getAllProductsFromShoppingCart(Long userId) { List products = List.of(iphone, macBook, xiaomi); - logger.info("Successfully fetched {} products from DB for user {}", - products.size(), userId); + logger.debug("Successfully fetched products from DB. Params: userId={}, productsCount={}", + userId, products.size()); return products; }