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/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/java/mate/academy/Main.java b/src/main/java/mate/academy/Main.java
index 085758fbf..0305bb97b 100644
--- a/src/main/java/mate/academy/Main.java
+++ b/src/main/java/mate/academy/Main.java
@@ -6,18 +6,32 @@
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;
+
+ String login = "bob";
+
try {
- user = authenticationService.login("bob", "1234");
+ user = authenticationService.login(login, "1234");
} catch (AuthenticationException e) {
- e.printStackTrace();
+ logger.error("Authentication failed for user with login={}", login, e);
return;
}
+
OrderService orderService = new OrderServiceImpl();
+
orderService.completeOrder(user.getUserId());
+
+ logger.info("Program finished successfully");
}
}
diff --git a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java
index f9fe83b70..5bdfc49b1 100644
--- a/src/main/java/mate/academy/service/AuthenticationServiceImpl.java
+++ b/src/main/java/mate/academy/service/AuthenticationServiceImpl.java
@@ -2,15 +2,26 @@
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.debug("Method login was called. Params: login={}", login);
+
User user = findByLogin(login);
+
if (!user.getPassword().equals(password)) {
+ logger.warn("Authentication failed for user {}", login);
throw new AuthenticationException("Username or password are incorrect");
}
+
+ 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 eeabe1555..f76977dd7 100644
--- a/src/main/java/mate/academy/service/OrderServiceImpl.java
+++ b/src/main/java/mate/academy/service/OrderServiceImpl.java
@@ -4,27 +4,36 @@
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. Params: 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 {} was completed for user {}", order.getOrderId(), userId);
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
+ logger.info("Fetching products from shopping cart for user {}",
+ userId);
+
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.debug("Successfully fetched products from DB. Params: userId={}, productsCount={}",
+ userId, products.size());
+
return products;
}
}
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
new file mode 100644
index 000000000..317e9b0e7
--- /dev/null
+++ b/src/main/resources/log4j2.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file