资讯动态

Log日志框架汇总

发布时间:2026/8/9 17:21:18 来源:尧图企业网站定制
1 Logback1.1 Logback下载一般情况Logback日志框架只需要下载slf4j-api、logback-core、logback-classic这三个jar包即可。一快捷下载方法slf4j-api-1.7.26.jar官网下载链接https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.26/logback-core-1.2.3.jar官网下载链接https://repo1.maven.org/maven2/ch/qos/logback/logback-core/1.2.3/logback-classic-1.2.3.jar官网下载链接https://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.2.3/1.2 Logback使用1.2.1 通过手动导包方式引入不推荐1在项目下新建文件夹lib导入Logback的相关jar包到该文件夹下并将lib文件夹手动添加到项目依赖库中去。2将Logback的核心配置文件logback.xml名称固定直接拷贝到src目录下必须是src目录下。a.绝对路径?xml version1.0 encodingUTF-8? configuration !-- CONSOLE 表示当前的日志信息是可以输出到控制台的 -- appender nameCONSOLE classch.qos.logback.core.ConsoleAppender !--输出流对象 默认 System.out 改为 System.err 其中err控制台输出日志为红色而out为黑色-- targetSystem.out/target encoder !--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度 %msg日志消息%n是换行符-- pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%n/pattern /encoder /appender !-- File表示当前的日志信息是可以输出到文件的 -- appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern charsetutf-8/charset /encoder !--日志输出路径(logback_message.log是文档名下方还有一处文件名不用写.log)-- fileD:\logback\logback_message.log/file !--指定日志文件拆分和压缩规则防止文件过大-- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy !--通过指定压缩文件名称来确定分割文件方式-- fileNamePatternD:\logback\logback_message-%d{yyyy-MMdd}.log%i.gz/fileNamePattern maxFileSize1MB/maxFileSize !--文件拆分大小-- /rollingPolicy /appender !-- level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF (关掉) 默认debug可忽略大小写 root可以包含零个或多个appender-ref元素标识这个输出位置将会被本日志级别控制。 -- root levelALL !--打印规则只打印不低于当前级别的日志-- appender-ref refCONSOLE/ !--如果这个地方不配置关联打印的位置改位置将不会记录日志-- appender-ref refFILE / /root /configurationb.相对路径?xml version1.0 encodingUTF-8? configuration !--三种相对路径-- !--1. valuelogs 即value./logs – 表示保存到程序运行目录 ./logs等同于logs-- !--2. value/logs – 表示保存到系统目录-- !--3. value“../logs” – 表示保存到程序运行目录的父目录-- proprety nameLOG_PATH value./logs / !-- CONSOLE 表示当前的日志信息是可以输出到控制台的 -- appender nameCONSOLE classch.qos.logback.core.ConsoleAppender !--输出流对象 默认 System.out 改为 System.err 其中err控制台输出日志为红色而out为黑色-- targetSystem.out/target encoder !--格式化输出%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度 %msg日志消息%n是换行符-- pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%n/pattern /encoder /appender !-- File表示当前的日志信息是可以输出到文件的 -- appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender encoder pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern charsetutf-8/charset /encoder !--日志输出路径(logback_message.log是文档名下方还有一处文件名不用写.log)-- filelog\logback_message.log/file !--指定日志文件拆分和压缩规则防止文件过大-- rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy !--通过指定压缩文件名称来确定分割文件方式-- fileNamePattern${LOG_PATH}\logback_message-%d{yyyy-MMdd}.log%i.gz/fileNamePattern maxFileSize1MB/maxFileSize !--文件拆分大小-- /rollingPolicy /appender !-- level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF (关掉) 默认debug可忽略大小写 root可以包含零个或多个appender-ref元素标识这个输出位置将会被本日志级别控制。 -- root levelALL !--打印规则只打印不低于当前级别的日志-- appender-ref refCONSOLE/ !--如果这个地方不配置关联打印的位置改位置将不会记录日志-- appender-ref refFILE / /root /configuration3在代码中获取日志的对象与使用getLogger(LogBackUtil);-------值为类名import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Auther lmy * date 2024-03-25 23:14 * Description This is description of code */ public class LogBackUtil { public static final Logger LOGGER LoggerFactory.getLogger(LogBackUtil); public static void main(String[] args) { LOGGER.error(出错啦error); LOGGER.warn(警告warn); LOGGER.info(收账啦info); LOGGER.debug(没出错debug); LOGGER.trace(跟踪中trace); } }4使用日志对象输出日志信息在控制台中输出在日志文件中输出1.2.2 maven方式引入1在maven项目中的pom.xml文件中引入依赖logback-classic会依赖另外两个包dependency groupIdch.qos.logback/groupId artifactIdlogback-classic/artifactId version1.2.3/version scopetest/scope /dependency2将Logback的核心配置文件logback.xml名称固定直接拷贝到maven项目的资源路径resources下1.3 日志输出级别level可等于TRACE、DEBUG、INFO、WARN、ERROR、ALL、OFF或不写。作用用于控制系统中哪些日志级别是可输出的。规则1级别TRACEDEBUGINFOWARNERROR可以忽略大小写2默认级别是debug即可不写level“DEBUG”3只输出不低于当前级别的日志4ALL和OFF分别是打开全部日志和关闭全部日志。1.4 springboot项目中配置?xml version1.0 encodingUTF-8? configuration scantrue scanPeriod10 seconds debugfalse !-- 日志级别从低到高分为TRACE DEBUG INFO WARN ERROR FATAL如果设置为WARN则低于WARN的信息都不会输出 -- !-- scan:当此属性设置为true时配置文件如果发生改变将会被重新加载默认值为true -- !-- scanPeriod:设置监测配置文件是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 -- !-- debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 -- contextNamelogback/contextName !-- name的值是变量的名称value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后可以使“${}”来使用变量。 -- property namelog.path valuelog / property nameconsole_log_pattern value%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level : %msg%n/ property namecharset valueUTF-8/ !--输出到控制台-- appender nameconsole classch.qos.logback.core.ConsoleAppender !--此日志appender是为开发使用只配置最底级别控制台输出的日志级别是大于或等于此级别的日志信息-- !-- 例如如果此处配置了INFO级别则后面其他位置即使配置了DEBUG级别的日志也不会被输出 -- !-- 例如如果此处配置了INFO级别则后面其他位置即使配置了DEBUG级别的日志也不会被输出 -- filter classch.qos.logback.classic.filter.ThresholdFilter levelDEBUG/level /filter encoder pattern${console_log_pattern}/pattern /encoder /appender !--输出到文件,只记录INFO级别信息-- appender nameinfo_file classch.qos.logback.core.rolling.RollingFileAppender rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy fileNamePattern${log.path}/info/logback.%d{yyyy-MM-dd}.log/fileNamePattern /rollingPolicy encoder pattern${console_log_pattern}/pattern charset${charset}/charset /encoder !-- 日志记录器的滚动策略按日期按大小记录 -- rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 每天日志归档路径以及格式 -- fileNamePattern${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log/fileNamePattern timeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP maxFileSize100MB/maxFileSize /timeBasedFileNamingAndTriggeringPolicy !--日志文件保留天数-- maxHistory15/maxHistory /rollingPolicy !-- 如果超过10MB就删除 -- triggeringPolicy classch.qos.logback.core.rolling.SizeBasedTriggeringPolicy maxFileSize10MB/maxFileSize /triggeringPolicy !-- 此日志文件只记录info级别的 -- filter classch.qos.logback.classic.filter.LevelFilter levelINFO/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter /appender !--输出到文件,只记录WARN级别信息-- appender namewarn_file classch.qos.logback.core.rolling.RollingFileAppender /appender !--输出到文件,只记录ERROR级别信息-- appender nameerror_file classch.qos.logback.core.rolling.RollingFileAppender /appender !-- root节点是必选节点用来指定最基础的日志输出级别只有一个level属性 level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF默认是DEBUG 可以包含零个或多个appender元素。 -- root levelinfo appender-ref refconsole / appender-ref refinfo_file / appender-ref refwarn_file/ appender-ref referror_file/ /root !-- logger用来设置某一个包或者具体的某一个类的日志打印级别、以及指定appender。 logger仅有一个name属性 一个可选的level和一个可选的additivity属性。 name:用来指定受此logger约束的某一个包或者具体的某一个类。 level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF 如果未设置此属性那么当前logger将会继承上级的级别。 additivity:是否向上级logger传递打印信息,默认是true -- !-- 使用mybatis的时候sql语句是debug下才会打印而这里我们只配置了info所以想要查看sql语句的话有以下两种操作 第一种把root levelINFO改成root levelDEBUG这样就会打印sql不过这样日志那边会出现很多其他消息 第二种就是单独给mapper下目录配置DEBUG模式代码如下这样配置sql语句会打印其他还是正常DEBUG级别 -- logger namecom.hyh.logback.web.LogTestController levelWARN additivityfalse appender-ref refconsole/ appender-ref refwarn_file/ appender-ref referror_file/ /logger !-- 如果多环境开发可以用springProfile -- !--开发环境:打印控制台-- springProfile namedev !--可以输出项目中的debug日志包括mybatis的sql日志-- logger namecom.hyh.logback.web levelDEBUG appender-ref refconsole/ /logger !-- root节点是必选节点用来指定最基础的日志输出级别只有一个level属性 level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF默认是DEBUG 可以包含零个或多个appender元素。 -- root levelINFO appender-ref refconsole/ /root /springProfile /configuration2 JUL(了解)JUL全称Java util Logging是java原生的日志框架使用时不需要另外引用第三方类库相对其他日志框架使用方便学习简单能够在小型应用中灵活使用。package com.example; import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.logging.*; /** * Auther lmy * date 2024-06-04 23:26 * Description This is description of code */ public class Main { Test public void testJUL() { //1.获取日志记录器对象 Logger logger Logger.getLogger(com.example.Main); //2.日志记录输出 logger.info(hello,JUL LOG); //通用方法进行日志记录 logger.log(Level.INFO, info msg); //通用占位符方式输出变量值 String name Tom; Integer age 18; logger.log(Level.INFO, 用户信息{0},{1}, new Object[]{name, age}); } //日志级别 Test public void testLogLevel() { //1.获取日志记录器对象 Logger logger Logger.getLogger(com.example.Main); //2.日志记录输出 logger.severe(severe); logger.warning(warning); logger.info(info); //jul 默认日志级别 info 只输出以上三个 logger.config(config); logger.fine(fine); logger.finer(finer); logger.finest(finest); } //自定义日志级别 Test public void testLogConfig() throws IOException { //1.获取日志记录器对象 Logger logger Logger.getLogger(com.example.Main); //关闭系统默认配置 logger.setUseParentHandlers(false); //自定义配置日志级别 //创建ConsoleHandler 控制台输出 ConsoleHandler consoleHandler new ConsoleHandler(); //创建简单格式转换对象 SimpleFormatter simpleFormatter new SimpleFormatter(); //进行关联 consoleHandler.setFormatter(simpleFormatter); logger.addHandler(consoleHandler); //配置日志具体级别 logger.setLevel(Level.ALL); consoleHandler.setLevel(Level.ALL); //创建FileHandler 文件输出 FileHandler fileHandler new FileHandler(./jul.log); //进行关联 fileHandler.setFormatter(simpleFormatter); logger.addHandler(fileHandler); //2.日志记录输出 logger.severe(severe); logger.warning(warning); logger.info(info); //jul 默认日志级别 info 只输出以上三个 logger.config(config); logger.fine(fine); logger.finer(finer); logger.finest(finest); } }3.LOG4JLog4j是Apache下的一款开源的日志框架通过在项目中使用Log4我们可以控制日志信息输出到控制台、文件、甚至是数据库中。我们可以控制每一条日志的输出格式通过定义日志的输出级别可以更灵活的控制日志的输出过程。方便项目的调试。官方网站: http://logging.apache.org/log4j/1.2/

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价