在Java编程中,“打”通常指打印输出或日志记录,这是调试、监控和用户交互的核心操作,以下从控制台输出和日志记录两方面详细说明,确保代码规范性和可维护性。

控制台打印输出(基础场景)
适用于调试或简单命令行程序,使用 System.out 或 System.err。
基础打印方法
// 打印字符串并换行
System.out.println("Hello World");
// 打印不换行
System.out.print("Java ");
System.out.print("Programming");
// 格式化输出(类似C语言printf)
String name = "Alice";
int age = 25;
System.out.printf("Name: %s, Age: %d%n", name, age); // %n 表示换行
输出结果示例
Hello World
Java Programming
Name: Alice, Age: 25
日志记录(生产环境推荐)
避免直接使用 System.out,专业项目需用日志框架,优势包括:
- 分级控制(DEBUG/INFO/ERROR)
- 输出到文件/网络
- 异步记录提升性能
使用 java.util.logging (JDK内置)
import java.util.logging.Logger;
import java.util.logging.Level;
public class Main {
// 创建Logger实例
private static final Logger logger = Logger.getLogger(Main.class.getName());
public static void main(String[] args) {
logger.info("程序启动"); // 普通信息
logger.warning("磁盘空间不足"); // 警告
logger.severe("数据库连接失败"); // 严重错误
// 调试信息(默认不显示,需配置级别)
logger.log(Level.FINE, "调试细节");
}
}
使用 Log4j2(主流第三方库)
步骤1:添加依赖(Maven)
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.2</version>
</dependency>
步骤2:配置文件 log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!-- 输出到控制台 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<!-- 输出到文件 -->
<File name="File" fileName="logs/app.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %c{1} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
步骤3:代码调用
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) {
logger.debug("调试信息"); // 仅开发环境可见
logger.info("用户登录成功");
logger.error("文件读取失败", new FileNotFoundException());
}
}
关键选择建议
| 场景 | 推荐方式 | 优点 |
|---|---|---|
| 临时调试/学习 | System.out.println |
简单快捷 |
| 小型工具 | java.util.logging |
无需额外依赖 |
| 企业级应用/微服务 | Log4j2 或 SLF4J | 高性能、灵活配置、异步记录 |
常见问题解决
-
日志不输出?
- 检查日志级别(如 Log4j2 中 Root level=”info” 时,DEBUG 不显示)
- 确认配置文件路径(默认放在
src/main/resources)
-
性能优化
- 使用占位符避免字符串拼接:
logger.debug("用户ID: {}", userId);
比logger.debug("用户ID: " + userId);更高效
- 使用占位符避免字符串拼接:
-
日志规范

- 错误日志包含异常堆栈:
logger.error("操作失败", e); - 敏感信息脱敏(如密码、身份证号)
- 错误日志包含异常堆栈:
- 初级开发:从
System.out.println入手理解流程。 - 正式项目:必须使用日志框架(Log4j2/SLF4J),遵循规范记录。
- 最佳实践:
✅ 日志分级管理(DEBUG → ERROR)
✅ 关键操作记录审计日志
❌ 避免打印敏感数据或大对象
引用说明:
- Oracle官方日志指南:Java Logging Overview
- Log4j2官方文档:Apache Log4j2
- 安全规范参考:OWASP Logging Cheat Sheet
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/19023.html