当前位置:

首页 > 编程开发 > 系统讲解Java如何优雅地打印日志

系统讲解Java如何优雅地打印日志

前言 先说说开发中最常见的一个问题:为什么生产环境的代码还在用 System.out.println?再比如,日志格式混乱——没有时间戳,不知道是谁打印的;日志级别使用不当,错误信息混在普通信息里。这些都是实打实的痛点。 今天咱们系统聊聊如何优雅地打印Ja va日志,彻底告别 System.out.

本文目录

    前言

    先说说开发中最常见的一个问题:为什么生产环境的代码还在用 System.out.println?再比如,日志格式混乱——没有时间戳,不知道是谁打印的;日志级别使用不当,错误信息混在普通信息里。这些都是实打实的痛点。

    系统讲解Ja va如何优雅地打印日志

    今天咱们系统聊聊如何优雅地打印Ja va日志,彻底告别 System.out.println,用上专业的日志框架(Logback / Log4j2),让你的日志更专业、更规范、排查问题也更顺手。

    一、为什么要用日志框架

    1.1 System.out.println 的问题

    先说说第一个核心痛点:System.out.println 到底不好在哪?

    1. 性能问题

    • 同步输出,会阻塞线程
    • 无法关闭,生产环境也得硬扛着输出
    • 没法按级别控制输出

    2. 功能缺失

    • 没有日志级别(DEBUG、INFO、WARN、ERROR)
    • 没有时间戳、线程信息、类名这些关键字段
    • 更没有上下文信息

    3. 管理困难

    • 无法按级别过滤日志
    • 无法按日期分割日志文件
    • 无法分类存储不同类型的日志
    • 远程传输日志?想都别想

    1.2 日志框架的优势

    反过来看,用日志框架能带来什么?

    1. 性能优化

    • 支持异步输出,不阻塞主线程
    • 支持日志级别控制,生产环境只输出 WARN 和 ERROR
    • 支持按包路径控制日志级别

    2. 功能丰富

    • 支持多种日志级别(DEBUG、INFO、WARN、ERROR)
    • 支持自定义格式(时间、线程、类名、行号等)
    • 支持 MDC(Mapped Diagnostic Context)上下文信息

    3. 管理便捷

    • 支持按日期、大小分割日志文件
    • 支持按类型分类存储日志
    • 支持异步写入数据库或消息队列
    • 支持结构化日志(JSON格式)

    二、日志级别

    2.1 日志级别定义

    /**
     * 日志级别从低到高
     * TRACE < DEBUG < INFO < WARN < ERROR
     */
    
    // TRACE:追踪信息,最详细的日志信息
    // 使用场景:调试时追踪程序执行流程
    logger.trace("用户登录,用户ID: {}", userId);
    
    // DEBUG:调试信息,开发调试时使用
    // 使用场景:开发阶段,记录变量值、方法调用等
    logger.debug("查询用户,用户ID: {}", userId);
    
    // INFO:重要信息,记录关键业务流程
    // 使用场景:记录重要操作、系统状态等
    logger.info("用户创建成功,用户ID: {}", userId);
    
    // WARN:警告信息,潜在的问题
    // 使用场景:参数校验失败、配置警告等
    logger.warn("用户余额不足,用户ID: {}, 余额: {}", userId, balance);
    
    // ERROR:错误信息,需要立即处理
    // 使用场景:异常捕获、系统错误等
    logger.error("订单创建失败,用户ID: {}", userId, exception);
    

    2.2 日志级别使用原则

    在实际项目中,每个级别该怎么用?看看下面的对照表就清楚了。

    级别 使用场景 生产环境
    TRACE 追踪详细执行流程 关闭
    DEBUG 调试信息、变量值 关闭
    INFO 重要操作、业务流程 开启
    WARN 警告、潜在问题 开启
    ERROR 错误、异常 开启

    三、Logback 配置

    3.1 Ma ven依赖

    
    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            ch.qos.logback
            logback-classic
            1.4.14
        
        
        
            ch.qos.logback
            logback-access
            1.4.14
        
    

    3.2 基础配置

    
    
        
        
        
        
        
        
            
                ${LOG_PATTERN}
                UTF-8
            
        
        
        
            ${LOG_PATH}/app.log
            
                ${LOG_PATTERN}
                UTF-8
            
            
            
                ${LOG_PATH}/app.%d{yyyy-MM-dd}.log
                30
            
        
        
        
            ${LOG_PATH}/error.log
            
                ${LOG_PATTERN}
                UTF-8
            
            
                ERROR
                ACCEPT
                DENY
            
            
                ${LOG_PATH}/error.%d{yyyy-MM-dd}.log
                30
            
        
        
        
            
            512
            0
        
        
        
            
            
            
        
    

    3.3 完整配置(推荐)

    
    
        
        
        
        
        
        
        
        
            
                ${CONSOLE_LOG_PATTERN}
                UTF-8
            
        
        
        
            ${LOG_HOME}/${APP_NAME}-all.log
            
                ${FILE_LOG_PATTERN}
                UTF-8
            
            
                ${LOG_HOME}/${APP_NAME}-all.%d{yyyy-MM-dd}.%i.log
                100MB
                30
                3GB
            
        
        
        
            ${LOG_HOME}/${APP_NAME}-error.log
            
                ${FILE_LOG_PATTERN}
                UTF-8
            
            
                ERROR
            
            
                ${LOG_HOME}/${APP_NAME}-error.%d{yyyy-MM-dd}.%i.log
                50MB
                60
                5GB
            
        
        
        
            
            1024
            0
        
        
            
            512
            0
        
        
        
            
            
                
                
                
            
        
        
        
            
            
                
                
                
            
        
        
        
            
            
                
                
            
        
    

    3.4 配置说明

    # application.yml
    logging:
      config: classpath:logback-spring.xml
      level:
        root: INFO
        com.example: DEBUG
        org.springframework: INFO
        org.hibernate.SQL: DEBUG
        org.hibernate.type.descriptor.sql.BasicBinder: TRACE

    四、Log4j2 配置

    4.1 Ma ven依赖

    
    
        
        
            org.springframework.boot
            spring-boot-starter-web
            
                
                
                    org.springframework.boot
                    spring-boot-starter-logging
                
            
        
        
        
            org.springframework.boot
            spring-boot-starter-log4j2
        
        
        
            com.lmax
            disruptor
            3.4.4
        
    

    4.2 基础配置

    
    
        
        
            
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
            
            logs
        
        
        
            
                
            
            
            
                
                
                    
                    
                
                
            
            
            
                
                
                    
                    
                
                
            
            
            
                
            
            
                
            
        
        
        
            
                
                
                
            
        
    

    4.3 完整配置(推荐)

    
    
        
        
            logs
            myapp
            
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{50} - %msg%n%ex
            
        
        
        
            
            
                
            
            
            
                
                
                    
                    
                    
                
                
            
            
            
                
                
                    
                    
                    
                
                
            
            
            
                
            
            
                
            
        
        
        
            
            
            
            
            
            
            
            
                
                
                
            
        
    

    五、代码中使用日志

    5.1 基本使用

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    /**
     * 日志使用示例
     */
    public class UserService {
    
        // 获取Logger实例
        private static final Logger logger = LoggerFactory.getLogger(UserService.class);
    
        /**
         * 创建用户
         */
        public void createUser(User user) {
            // TRACE:追踪信息
            logger.trace("开始创建用户,用户名: {}", user.getUsername());
    
            try {
                // DEBUG:调试信息
                logger.debug("用户信息: {}", user);
    
                // 业务逻辑
                sa veUser(user);
    
                // INFO:重要信息
                logger.info("用户创建成功,用户ID: {}", user.getId());
    
            } catch (Exception e) {
                // ERROR:错误信息(包含异常堆栈)
                logger.error("用户创建失败,用户名: {}", user.getUsername(), e);
            }
        }
    
        /**
         * 参数校验失败
         */
        public void validateUser(User user) {
            if (user.getUsername() == null || user.getUsername().isEmpty()) {
                // WARN:警告信息
                logger.warn("用户名为空,用户ID: {}", user.getId());
            }
        }
    }
    

    5.2 使用占位符

    /**
     * 日志占位符使用示例
     */
    public class OrderService {
    
        private static final Logger logger = LoggerFactory.getLogger(OrderService.class);
    
        /**
         * 创建订单
         */
        public void createOrder(Order order) {
            // 使用占位符{},避免字符串拼接
            // 错误做法:logger.info("订单创建成功,订单ID: " + order.getId());
            // 正确做法:
            logger.info("订单创建成功,订单ID: {}", order.getId());
    
            // 多个占位符
            logger.info("订单信息: ID={}, 用户ID={}, 金额={}", 
                       order.getId(), order.getUserId(), order.getAmount());
    
            // 占位符数量不匹配时,会使用toString()
            logger.info("订单创建: {}", order);
        }
    }
    

    5.3 异常日志

    /**
     * 异常日志示例
     */
    public class PaymentService {
    
        private static final Logger logger = LoggerFactory.getLogger(PaymentService.class);
    
        /**
         * 支付处理
         */
        public void processPayment(Payment payment) {
            try {
                // 业务逻辑
                process(payment);
    
            } catch (InsufficientBalanceException e) {
                // 带异常的日志
                logger.error("余额不足,用户ID: {}, 订单ID: {}", 
                            payment.getUserId(), payment.getOrderId(), e);
    
            } catch (PaymentException e) {
                // 错误日志
                logger.error("支付处理失败,订单ID: {}", payment.getOrderId(), e);
    
            } catch (Exception e) {
                // 未预期的异常
                logger.error("系统异常,订单ID: {}", payment.getOrderId(), e);
            }
        }
    }
    

    5.4 MDC 上下文

    import org.slf4j.MDC;
    
    /**
     * MDC(Mapped Diagnostic Context)使用示例
     */
    public class RequestContext {
    
        private static final Logger logger = LoggerFactory.getLogger(RequestContext.class);
    
        /**
         * 设置请求上下文
         */
        public static void setContext(String traceId, String userId) {
            // 设置MDC
            MDC.put("traceId", traceId);
            MDC.put("userId", userId);
            MDC.put("requestTime", String.valueOf(System.currentTimeMillis()));
    
            logger.info("请求上下文已设置");
        }
    
        /**
         * 清除请求上下文
         */
        public static void clearContext() {
            MDC.clear();
            logger.info("请求上下文已清除");
        }
    
        /**
         * 使用示例
         */
        public void handleRequest(String traceId, String userId) {
            try {
                setContext(traceId, userId);
    
                // 日志会自动包含MDC信息
                logger.info("处理请求");
    
                // 业务逻辑
                processRequest();
    
            } finally {
                clearContext();
            }
        }
    }
    

    logback-spring.xml 中配置 MDC:

    
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%X{userId}] %-5level %logger{36} - %msg%n
    

    六、日志格式说明

    6.1 常用格式化符号

    /**
     * Logback 格式化符号
     */
    %logger{36}      // Logger名称,最多36个字符
    %date           // 日期和时间
    %d{yyyy-MM-dd}  // 日期
    %d{HH:mm:ss.SSS} // 时间
    %p / %-5level    // 日志级别(5个字符宽度,左对齐)
    %thread         // 线程名称
    %m / %msg        // 日志消息
    %n              // 换行符
    %ex             // 异常堆栈
    %caller         // 调用者信息
    %line           // 行号
    %file           // 文件名
    %M              // 方法名
    
    /**
     * Log4j2 格式化符号
     */
    %d              // 日期和时间
    %p / %-5p       // 日志级别
    %t              // 线程名称
    %c / %-36c      // Logger名称
    %m              // 日志消息
    %n              // 换行符
    %ex             // 异常堆栈
    %F              // 文件名
    %L              // 行号
    %M              // 方法名
    %r              // 毫秒数
    

    6.2 推荐的日志格式

    
    
        %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} 
        %clr(%5p) 
        %clr([%15.15t]){faint} 
        %clr(%-40.40logger{39}){cyan} 
        %clr(:){faint} 
        %m%n
    
    
    
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n%ex
    
    
    
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId}] [%X{userId}] %-5level %logger{36} - %msg%n
    

    七、日志最佳实践

    7.1 最佳实践示例

    /**
     * 日志最佳实践
     */
    public class OrderService {
    
        private static final Logger logger = LoggerFactory.getLogger(OrderService.class);
    
        /**
         * 最佳实践1:合理使用日志级别
         */
        public void createOrder(Order order) {
            logger.trace("开始创建订单");  // 追踪信息
            logger.debug("订单详情: {}", order);  // 调试信息
    
            // 重要操作
            logger.info("订单创建成功,订单ID: {}, 用户ID: {}", 
                       order.getId(), order.getUserId());
        }
    
        /**
         * 最佳实践2:使用占位符而不是字符串拼接
         */
        public void updateOrder(Order order) {
            // 错误做法
            // logger.info("订单更新: ID=" + order.getId() + ", 状态=" + order.getStatus());
    
            // 正确做法
            logger.info("订单更新: ID={}, 状态={}", order.getId(), order.getStatus());
        }
    
        /**
         * 最佳实践3:异常日志包含关键信息
         */
        public void processOrder(Long orderId) {
            try {
                process(orderId);
            } catch (OrderNotFoundException e) {
                // 包含关键业务信息
                logger.error("订单不存在,订单ID: {}", orderId, e);
            } catch (Exception e) {
                // 包含异常堆栈
                logger.error("订单处理失败,订单ID: {}", orderId, e);
            }
        }
    
        /**
         * 最佳实践4:避免在循环中打印日志
         */
        public void processBatch(List orderIds) {
            // 错误做法:在循环中打印日志
            // for (Long orderId : orderIds) {
            //     logger.info("处理订单: {}", orderId);
            // }
    
            // 正确做法:批量打印
            logger.info("批量处理订单,数量: {}, 订单ID列表: {}", 
                       orderIds.size(), orderIds);
    
            // 或者只打印摘要
            logger.info("批量处理订单,数量: {}", orderIds.size());
        }
    
        /**
         * 最佳实践5:使用MDC记录请求上下文
         */
        public void handleRequest(String traceId, Long userId) {
            MDC.put("traceId", traceId);
            MDC.put("userId", String.valueOf(userId));
    
            try {
                logger.info("开始处理请求");
                // 业务逻辑
            } finally {
                MDC.clear();
            }
        }
    }
    

    7.2 性能优化建议

    /**
     * 日志性能优化
     */
    public class PerformanceOptimization {
    
        /**
         * 优化1:判断日志级别
         */
        public void expensiveOperation() {
            // 错误做法:即使日志级别不满足,也会执行字符串拼接
            // logger.debug("用户列表: " + getUsers());
    
            // 正确做法:先判断日志级别
            if (logger.isDebugEnabled()) {
                logger.debug("用户列表: {}", getUsers());
            }
        }
    
        /**
         * 优化2:使用异步日志
         */
        // 在配置文件中配置异步Appender
    
        /**
         * 优化3:避免记录敏感信息
         */
        public void logPayment(Payment payment) {
            // 错误做法:记录敏感信息
            // logger.info("支付信息: {}", payment);
    
            // 正确做法:脱敏处理
            logger.info("支付信息: ID={}, 金额={}, 卡号={}", 
                       payment.getId(), 
                       payment.getAmount(),
                       maskCardNumber(payment.getCardNumber()));
        }
    
        /**
         * 卡号脱敏
         */
        private String maskCardNumber(String cardNumber) {
            if (cardNumber == null || cardNumber.length() < 16) {
                return "****";
            }
            return cardNumber.substring(0, 4) + "****" + cardNumber.substring(12);
        }
    }
    

    八、日志分析工具

    8.1 常用日志分析工具

    /**
     * 日志分析工具推荐
     */
    public class LogAnalysisTools {
    
        /**
         * 1. ELK Stack
         * - Elasticsearch: 日志存储和搜索
         * - Logstash: 日志收集和处理
         * - Kibana: 日志可视化
         */
    
        /**
         * 2. Splunk
         * - 商业日志分析平台
         * - 强大的搜索和分析功能
         */
    
        /**
         * 3. Graylog
         * - 开源日志管理平台
         * - 基于Elasticsearch和MongoDB
         */
    
        /**
         * 4. Loki
         * - Grafana出品
         * - 轻量级日志聚合系统
         */
    
        /**
         * 5. Sentry
         * - 错误监控和日志收集
         * - 支持实时告警
         */
    }
    

    8.2 日志查询示例

    # 使用grep查询日志
    grep "ERROR" app.log
    grep "用户创建成功" app.log
    
    # 查找特定时间段的日志
    grep "2024-01-01" app.log
    
    # 查找包含特定关键词的日志
    grep -E "(ERROR|WARN)" app.log
    
    # 统计错误数量
    grep "ERROR" app.log | wc -l
    
    # 查找特定用户的日志
    grep "userId=123456" app.log
    

    九、Spring Boot 集成

    9.1 配置文件配置

    # application.yml
    logging:
      config: classpath:logback-spring.xml
      level:
        root: INFO
        com.example: DEBUG
        org.springframework: INFO
        org.hibernate.SQL: DEBUG
        org.hibernate.type.descriptor.sql.BasicBinder: TRACE
      file:
        name: logs/app.log
      pattern:
        console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"
        file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"

    9.2 不同环境配置

    # application-dev.yml(开发环境)
    logging:
      level:
        root: DEBUG
        com.example: DEBUG
    # application-test.yml(测试环境)
    logging:
      level:
        root: INFO
        com.example: INFO
    # application-prod.yml(生产环境)
    logging:
      level:
        root: WARN
        com.example: INFO
      file:
        name: /var/log/myapp/app.log

    十、总结

    10.1 最佳实践清单

    配置管理:

    • 使用日志框架(Logback / Log4j2)
    • 配置合理的日志格式
    • 配置日志文件滚动策略
    • 配置不同环境的日志级别

    代码使用:

    • 使用占位符而不是字符串拼接
    • 合理使用日志级别
    • 异常日志包含关键信息
    • 使用MDC记录请求上下文

    性能优化:

    • 使用异步日志
    • 判断日志级别后再记录
    • 避免在循环中打印日志
    • 避免记录敏感信息

    日志管理:

    • 使用日志分析工具
    • 定期清理旧日志
    • 配置日志告警
    • 建立日志规范

    10.2 避坑指南

    常见错误:

    • ❌ 使用 System.out.println
    • ❌ 字符串拼接日志消息
    • ❌ 所有日志都用INFO级别
    • ❌ 异常日志不包含堆栈
    • ❌ 在循环中打印大量日志
    • ❌ 记录敏感信息

    正确做法:

    • ✅ 使用日志框架
    • ✅ 使用占位符{}
    • ✅ 合理使用日志级别
    • ✅ 异常日志包含堆栈和关键信息
    • ✅ 批量记录或记录摘要
    • ✅ 脱敏处理敏感信息

    记住:日志是系统的重要组成部分,良好的日志记录能够帮助你快速定位问题、分析系统状态。选择合适的日志框架,合理配置日志级别和格式,遵循最佳实践,让你的日志更有价值!

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    GitHub六个AI开源项目能做什么?软件理解、语音与求职场景
    GitHub六个AI开源项目能做什么?软件理解、语音与求职场景

    解析六个GitHub AI开源项目的具体用途,包括软件静态分析、智能体回答检查、多语言配音、求职材料生成、本地代码检索及动态歌词展示,帮助开发者根据实际需求筛选工具并正确验证结果。

    opencode安装skills教程及本地配置方法
    opencode安装skills教程及本地配置方法

    遇到OpenCode Skills无法加载或配置无效?本文手把手教你完成Skills的安装、环境变量设置及本地调试,避开常见坑点,让AI助手更懂你的代码习惯。

    如何开启Visual Studio2022实时代码分析警告提示
    如何开启Visual Studio2022实时代码分析警告提示

    解决 Visual Studio 2022 编辑时不显示代码分析警告的问题。指南涵盖 .NET 项目实时分析设置、Roslyn 分析器范围调整及错误列表来源筛选,确保开发者能高效利用实时代码诊断功能。

    如何在Visual Studio2022查看变量监视窗口调试程序
    如何在Visual Studio2022查看变量监视窗口调试程序

    详解 Visual Studio 2022 调试技巧:包括断点设置、监视窗口开启方法、变量添加步骤以及通过 F10 单步执行观察变量值变化的全过程。

    Visual Studio2017设置默认编码为UTF-8不带BOM
    Visual Studio2017设置默认编码为UTF-8不带BOM

    针对 Visual Studio 2017 缺乏全局默认编码选项的情况,详解如何利用 .editorconfig 设定项目级 UTF-8 无 BOM 规则,以及手动转换现有文件并校验字节的方法。

    Visual Studio2022F5调试提示启动项目未配置怎么修复
    Visual Studio2022F5调试提示启动项目未配置怎么修复

    解决 Visual Studio 2022 F5 调试报错问题,通过设置启动项目、检查解决方案属性及正确区分类库与应用项目,快速恢复调试功能。

    Visual Studio2022NuGet包还原失败离线处理方案
    Visual Studio2022NuGet包还原失败离线处理方案

    解决Visual Studio 2022离线环境中NuGet包还原失败的难题,涵盖依赖链分析、本地源配置、包集收集及隔离验证步骤,帮助开发者构建稳定的离线开发环境。

    Visual Studio2017大项目加载缓慢,优化加载性能技巧
    Visual Studio2017大项目加载缓慢,优化加载性能技巧

    解决Visual Studio 2017大型项目加载慢的实用指南。涵盖性能监测、扩展管理、文档恢复优化及版本兼容性检查,帮助开发者精准定位瓶颈并提升工作效率。

    Visual Studio2022设置多启动项目同时调试运行
    Visual Studio2022设置多启动项目同时调试运行

    详解 Visual Studio 2022 多启动项目配置方法,包括启动动作选择、顺序调整及调试技巧,帮助开发者高效调试分布式或前后端分离应用。

    fastapi下载文件接口实现教程
    fastapi下载文件接口实现教程

    深入解析在FastAPI框架中实现文件下载接口的完整方案,涵盖基于FileResponse的本地静态文件传输、基于StreamingResponse的分块流式传输、RFC 5987中文文件名编码规范、路径穿越安全防御及BackgroundTasks临时文件清理,并配备详细代码示例与架构解析图。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。