网站首页 > java教程 正文
一、日志级别
- ERROR:用于记录系统中出现的严重错误,例如无法恢复的异常、数据库连接失败等,这些错误会导致系统功能无法正常使用。示例:在尝试连接数据库时,如果连接失败,应记录为 ERROR 级别日志,如:ERROR: Failed to connect to the database. Error message: [具体错误信息]
- WARN:用于记录可能出现问题或需要关注的情况,但系统仍能正常运行。例如:当系统检测到内存使用率过高,但尚未达到危险级别时,可以记录为 WARN 级别日志,如:WARN: Memory usage is high. Current usage: [具体使用率]
- INFO:记录系统的主要流程和关键操作的信息,有助于了解系统的正常运行情况。比如:当系统成功启动时,记录 INFO 级别日志:INFO: System started successfully.
- DEBUG:用于开发和调试阶段,记录详细的调试信息,在生产环境中通常不启用。假设在调试某个方法的执行过程,可以记录输入参数和中间结果,如:DEBUG: Entering method [方法名] with parameters: [参数列表]
Log4j 配置日志级别:
通常可以通过修改配置文件 log4j.properties 或 log4j.xml 来设置日志级别。
在 log4j.properties 中:
# 设置根日志级别为 INFO
log4j.rootLogger=INFO, Console
# 配置控制台 Appender
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# 可以单独为某个包或类设置不同的日志级别
log4j.logger.com.example.package=DEBUG
在 log4j.xml 中:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
<Logger name="com.example.package" level="DEBUG"/>
</Loggers>
</Configuration>
Logback 配置日志级别:
通过修改配置文件 logback.xml :
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_HOME" value="logs" />
<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.example.package" level="DEBUG" />
</configuration>
二、日志内容
- 必须包含足够的上下文信息,例如请求的用户 ID、操作的模块、关键的输入参数等。例如:在处理用户注册请求时,日志可以包含用户的邮箱、用户名等信息:INFO: User registration requested. Email: [用户邮箱], Username: [用户名]
- 对于异常,要记录完整的异常堆栈信息,以便于排查问题。像这样:ERROR: Exception occurred while processing payment. Exception: [异常类型] Message: [异常消息] Stack Trace: [完整堆栈信息]
三、日志格式
- 统一的格式有助于日志的分析和处理,常见的格式包括时间戳、日志级别、线程 ID、类名、方法名、日志消息等。例如:[2024-07-29 10:30:00.000] [INFO] [Thread-1] [com.example.ClassName.methodName] Log message
- 时间戳应精确到毫秒,以便准确跟踪事件发生的时间顺序。
四、日志输出
- 不同的环境(开发、测试、生产)可以有不同的日志配置,例如在生产环境中可以降低日志级别,减少日志输出量。
- 日志应该输出到指定的文件或日志服务器,以便集中管理和分析。
五、日志清理和归档
- 定期清理过期的日志文件,以避免占用过多的磁盘空间。
- 对重要的日志进行归档备份,以便后续查询和审计。
遵循这些日志规范,可以提高系统的可维护性和故障排查效率,保障企业级项目的稳定运行。
- 上一篇: 小白也能看懂Java 日志体系(SLF4J)
- 下一篇: java打日志超简单(java如何输出日志)
猜你喜欢
- 2024-11-12 java日志那些事儿-日志野史(java 日志包)
- 2024-11-12 大厂都是如何解决Java日志级别,重复记录、丢日志问题?
- 2024-11-12 五年Java经验,面试还是说不出日志该怎么写更好?
- 2024-11-12 Java常用日志框架总结(java的日志框架)
- 2024-11-12 java日志组件(java 日志系统)
- 2024-11-12 java打日志超简单(java如何输出日志)
- 2024-11-12 小白也能看懂Java 日志体系(SLF4J)
- 2024-11-12 开发须知:开发者须知的4类Java日志
- 2024-11-12 谈谈日志的最佳实践(谈谈日志的最佳实践方式)
- 2024-11-12 4000字长文介绍Java日志中框架,最全面
你 发表评论:
欢迎- 06-15Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 06-15推荐一款超棒的SpringCloud 脚手架项目
- 06-15IDEA将项目打包成jar包(idea打包普通java项目)
- 06-15Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 06-15记录Dockerfile将jar包构建成部署所需的镜像
- 06-15项目基础部署汇总八---linux下xxl-job安装
- 06-15Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 06-15终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 最近发表
-
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 推荐一款超棒的SpringCloud 脚手架项目
- IDEA将项目打包成jar包(idea打包普通java项目)
- Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 记录Dockerfile将jar包构建成部署所需的镜像
- 项目基础部署汇总八---linux下xxl-job安装
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 如何将本地JAR文件添加到Maven项目中
- Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)