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