Java 开发 日志技术
1.概述为什么要在程序中记录日志呢便于追踪应用程序中的数据信息、程序的执行过程。便于对应用程序的性能进行优化。便于应用程序出现问题之后排查问题解决问题。便于监控系统的运行状态。2.日志框架JUL这是JavaSE平台提供的官方日志框架也被称为JUL。配置相对简单但不够灵活性能较差。Log4j一个流行的日志框架提供了灵活的配置选项支持多种输出目标。Logback基于Log4j升级而来提供了更多的功能和配置选项性能优于Log4j。Slf4jSimple Logging Facade for Java简单日志门面提供了一套日志操作的标准接口及抽象类允许应用程序使用不同的底层日志框架3.LogBack入门1. 准备工作引入logback的依赖springboot中无需引入在springboot中已经传递了此依赖dependency groupIdch.qos.logback/groupId artifactIdlogback-classic/artifactId version1.4.11/version /dependency2.引入配置文件logback.xml放在src/main/resources目录下 可以直接AI生成?xml version1.0 encodingUTF-8? configuration !-- 控制台输出 -- appender nameSTDOUT classch.qos.logback.core.ConsoleAppender encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder !--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度 %msg日志消息%n是换行符 -- pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n/pattern /encoder /appender !-- 日志输出级别 -- root levelALL appender-ref refSTDOUT / /root /configuration3.记录日志定义日志记录对象Logger记录日志public class LogTest { //定义日志记录对象 private static final Logger log LoggerFactory.getLogger(LogTest.class); Test public void testLog(){ log.debug(开始计算...); int sum 0; int[] nums {1, 5, 3, 2, 1, 4, 5, 4, 6, 7, 4, 34, 2, 23}; for (int i 0; i nums.length; i) { sum nums[i]; } log.info(计算结果为: sum); log.debug(结束计算...); } }运行单元测试可以在控制台中看到输出的日志如下所示我们可以看到在输出的日志信息中不仅输出了日志的信息还包括日志的输出时间、线程名、具体在那个类中输出的。4.Logback配置文件Logback日志框架的配置文件叫logback.xml。该配置文件是对Logback日志框架输出的日志进行控制的可以来配置输出的格式、位置及日志开关等。常用的两种输出日志的位置控制台、系统文件。1). 如果需要输出日志到控制台。添加如下配置!-- 控制台输出 -- appender nameSTDOUT classch.qos.logback.core.ConsoleAppender encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder !--格式化输出%d 表示日期%thread 表示线程名%-5level表示级别从左显示5个字符宽度%msg表示日志消息%n表示换行符 -- pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n/pattern /encoder /appender2). 如果需要输出日志到文件。添加如下配置!-- 按照每天生成日志文件 -- appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy !-- 日志文件输出的文件名, %i表示序号 -- FileNamePatternD:/tlias-%d{yyyy-MM-dd}-%i.log/FileNamePattern !-- 最多保留的历史日志文件数量 -- MaxHistory30/MaxHistory !-- 最大文件大小超过这个大小会触发滚动到新文件默认为 10MB -- maxFileSize10MB/maxFileSize /rollingPolicy encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder !--格式化输出%d 表示日期%thread 表示线程名%-5level表示级别从左显示5个字符宽度%msg表示日志消息%n表示换行符 -- pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n/pattern /encoder /appender3). 日志开关配置 开启日志ALL取消日志OFF!-- 日志输出级别 -- root levelALL !--输出到控制台-- appender-ref refSTDOUT / !--输出到文件-- appender-ref refFILE / /root4.Logback日志级别日志级别指的是日志信息的类型日志都会分级别常见的日志级别如下优先级由低到高日志级别说明记录方式trace追踪记录程序运行轨迹 【使用很少】log.trace(...)debug调试记录程序调试过程中的信息实际应用中一般将其视为最低级别 【使用较多】log.debug(...)info记录一般信息描述程序运行的关键事件如网络连接、io操作 【使用较多】log.info(...)warn警告信息记录潜在有害的情况 【使用较多】log.warn(...)error错误信息 【使用较多】log.error(...)可以在配置文件logback.xml中灵活的控制输出那些类型的日志。大于等于配置的日志级别的日志才会输出lombok中提供的Slf4j注解可以简化定义日志记录器这步操作。添加了该注解就相当于在类中定义了日志记录器就下面这句代码private static Logger log LoggerFactory. getLogger(Xxx. class);
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2461494.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!