JAVA开发ERP时在 PurchaseOrderServiceImpl.java 中添加日志记录进行调试

发布于:2025-02-11 ⋅ 阅读:(106) ⋅ 点赞:(0)

PurchaseOrderServiceImpl.java 中添加日志记录,以便在保存订单时输出参数进行调试。可以使用 Spring 的日志框架(SLF4J 和 Logback)来实现这一点。

添加日志记录

  1. 引入 SLF4J 依赖: 确保项目中已经包含了 SLF4J 和 Logback 的依赖。通常在 Maven 或 Gradle 项目中,默认会包含这些依赖。

  2. PurchaseOrderServiceImpl.java 中添加日志记录:

    • 引入 org.slf4j.Loggerorg.slf4j.LoggerFactory
    • 在类中声明一个 Logger 实例。
    • 使用 logger.info 方法记录日志。

修改后的 PurchaseOrderServiceImpl.java

以下是修改后的 PurchaseOrderServiceImpl.java 文件示例,其中包含了日志记录功能:

package com.mechanical.erp.modules.purchase.service.impl;

import com.mechanical.erp.modules.purchase.entity.PurchaseOrder;
import com.mechanical.erp.modules.purchase.repository.PurchaseOrderRepository;
import com.mechanical.erp.modules.purchase.service.PurchaseOrderService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class PurchaseOrderServiceImpl implements PurchaseOrderService {

    private static final Logger logger = LoggerFactory.getLogger(PurchaseOrderServiceImpl.class);

    @Autowired
    private PurchaseOrderRepository purchaseOrderRepository;

    @Override
    public PurchaseOrder createPurchaseOrder(PurchaseOrder purchaseOrder) {
        logger.info("保存订单参数: {}", purchaseOrder);
        return purchaseOrderRepository.save(purchaseOrder);
    }

    @Override
    public PurchaseOrder updatePurchaseOrder(Long id, PurchaseOrder purchaseOrder) {
        Optional<PurchaseOrder> existingOrder = purchaseOrderRepository.findById(id);
        if (existingOrder.isPresent()) {
            PurchaseOrder orderToUpdate = existingOrder.get();
            orderToUpdate.setSupplier(purchaseOrder.getSupplier());
            orderToUpdate.setOrderDate(purchaseOrder.getOrderDate());
            orderToUpdate.setStatus(purchaseOrder.getStatus());
            // 其他字段...
            logger.info("更新订单参数: {}, 新值: {}", id, purchaseOrder);
            return purchaseOrderRepository.save(orderToUpdate);
        } else {
            logger.error("采购订单未找到, ID: {}", id);
            throw new RuntimeException("采购订单未找到");
        }
    }

    @Override
    public void deletePurchaseOrder(Long id) {
        logger.info("删除订单参数: {}", id);
        purchaseOrderRepository.deleteById(id);
    }

    @Override
    public PurchaseOrder getPurchaseOrderById(Long id) {
        logger.info("获取订单参数: {}", id);
        return purchaseOrderRepository.findById(id)
                .orElseThrow(() -> {
                    logger.error("采购订单未找到, ID: {}", id);
                    throw new RuntimeException("采购订单未找到");
                });
    }

    @Override
    public List<PurchaseOrder> getAllPurchaseOrders() {
        logger.info("获取所有订单");
        return purchaseOrderRepository.findAll();
    }
}

解释

  1. 引入日志库:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
  2. 声明日志实例:

    private static final Logger logger = LoggerFactory.getLogger(PurchaseOrderServiceImpl.class);
    
  3. 添加日志记录:

    • createPurchaseOrder 方法中记录保存的订单参数。
    • updatePurchaseOrder 方法中记录更新的订单参数和新值。
    • deletePurchaseOrder 方法中记录删除的订单参数。
    • getPurchaseOrderById 方法中记录获取的订单参数。
    • getAllPurchaseOrders 方法中记录获取所有订单的操作。

日志配置

确保你的项目中有适当的日志配置文件(如 logback-spring.xml),以便正确输出日志。以下是一个简单的 logback-spring.xml 示例:

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>

    <logger name="com.mechanical.erp" level="debug" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
</configuration>

总结

  • PurchaseOrderServiceImpl.java:
    • 目的: 实现 PurchaseOrderService 接口中的业务逻辑。
    • 内容: 提供具体的方法实现,并添加日志记录以输出保存订单的参数。
    • 作用: 确保业务逻辑的具体实现,并且可以被其他组件(如控制器)调用,同时提供详细的日志信息以便调试和监控。

通过这种方式,你可以在保存订单时输出参数,便于调试和跟踪应用程序的行为。


网站公告

今日签到

点亮在社区的每一天
去签到