当前位置: 首页 > news >正文

logback日志配置

springboot默认使用logback 无需额外添加pom依赖

1.指定日志文件路径

当前项目路径 testlog文件夹下 linux会在项目jar包同级目录
<property name="log.path" value="./testlog" />
如果是下面这样配置的话 window会保存在当前项目所在盘的home文件夹下的testlog文件夹下
linux会直接在home文件夹下的testlog文件夹下
<property name="log.path" value="/home/testlog" />

2.控制台彩色打印

    <!-- 彩色日志 --><!-- 配置格式变量:CONSOLE_LOG_PATTERN 彩色日志格式 --><!-- magenta:洋红 --><!-- boldMagenta:粗红--><!-- cyan:青色 --><!-- white:白色 --><!-- magenta:洋红 -->
<!--    %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0-->
<property name="CONSOLE_LOG_PATTERN"value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>

在这里插入图片描述

3.配置控制台输出

<!--输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><Pattern>${CONSOLE_LOG_PATTERN}</Pattern><!-- 设置字符集 --><charset>UTF-8</charset></encoder>
</appender>

4.配置日志文件

4.1.INFO

<!-- 时间滚动输出 level为 INFO 日志 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/log_info.log</file><!--日志文件输出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 每天日志归档路径以及格式 --><fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文件只记录info级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter>
</appender>

4.2.WARN

<!-- 时间滚动输出 level为 WARN 日志 -->
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/log_warn.log</file><!--日志文件输出格式--><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset> <!-- 此处设置字符集 --></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文件只记录warn级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter>
</appender>

4.3.ERROR

    <!-- 时间滚动输出 level为 ERROR 日志 --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/log_error.log</file><!--日志文件输出格式--><encoder>
<!--            %logger 输出logger名称,也就是打印出自哪个类--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset> <!-- 此处设置字符集 --></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文件只记录ERROR级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender>

4.4.DEBUG

<!-- 时间滚动输出 level为 DEBUG的日志 -->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><file>${log.path}/log_debug.log</file><!--日志文件输出格式--><encoder><!--            %logger 输出logger名称,也就是打印出自哪个类--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern><charset>UTF-8</charset> <!-- 此处设置字符集 --></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><!--日志文件保留天数--><maxHistory>15</maxHistory></rollingPolicy><!-- 此日志文件只记录DEBUG级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter>
</appender>

5.针对环境单独配置

5.1.开发环境

    <!--开发环境:打印控制台--><springProfile name="dev"><!--针对某个包或者类定义日志级别--><logger name="com.lzp.controller.RabbitController" level="DEBUG" /><logger name="com.lzp.listener.StockReleaseListener" level="DEBUG" /><logger name="com.lzp.mapper" level="DEBUG"> </logger><!--root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALLOFF,默认是DEBUG可以包含零个或多个appender元素。--><!-- 全局的日志级别配置 这样配置是只在控制台打印和保存四种日志 另外两种不在文件保存--><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="INFO_FILE" /><appender-ref ref="WARN_FILE" /><appender-ref ref="DEBUG_FILE"/><appender-ref ref="ERROR_FILE" /></root></springProfile>

只打印sql 其他还是跟随root配置

<logger name="jdbc.sqlonly" level="DEBUG" additivity="false"><appender-ref ref="CONSOLE" />
</logger>

5.2.生产环境

生产环境:输出到文件

<springProfile name="pro"><root level="DEBUG"><appender-ref ref="CONSOLE" /><appender-ref ref="DEBUG_FILE" /><appender-ref ref="INFO_FILE" /><appender-ref ref="ERROR_FILE" /><appender-ref ref="WARN_FILE" /></root>
</springProfile>

6.效果

保存在项目根目录
在这里插入图片描述
四种级别
在这里插入图片描述
linux和jar包同级目录
在这里插入图片描述

7.使用

private static final Logger logger = LoggerFactory.getLogger(TestlogApplicationTests.class);
http://www.lryc.cn/news/294554.html

相关文章:

  • SpringBoot集成Flowable工作流
  • try-with-resources 语法详解
  • 【Java程序设计】【C00207】基于(JavaWeb+SSM)的宠物领养管理系统(论文+PPT)
  • 2024-2-4-复习作业
  • 【Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid父进程id不变?】
  • 【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
  • Python算法题集_环形链表
  • 【51单片机】开发板&开发软件(Keil5&STC-ISP)简介&下载安装破译传送门(1)
  • #vu3# element plus表格的序号字段
  • 华为配置OSPF与BFD联动示例
  • Git 常用命令详解及如何在IDEA中操作
  • linux+rv1126/imx6ull:opencv静态库交叉编译(手把手百分百成功)
  • Python使用回调函数或async/await关键字、协程实现异步编程
  • 异地办公必不可缺的远程控制软件,原理到底是什么?
  • docker更换镜像源
  • SaaS 电商设计 (八) 直接就能用的一套商品池完整的设计方案(建议收藏)
  • 【Spring连载】使用Spring Data访问Redis(八)----发布/订阅消息
  • list基本使用
  • 网络原理TCP/IP(5)
  • 前端JavaScript篇之JavaScript为什么要进行变量提升,它导致了什么问题?什么是尾调用,使用尾调用有什么好处?
  • React和Vue实现路由懒加载
  • ReactNative实现的横向滑动条
  • 华为自动驾驶干不过特斯拉?
  • docker容器stop流程
  • 生产环境_Spark接收传入的sql并替换sql中的表名与解析_非常NB
  • 【issue-YOLO】自定义数据集训练YOLO-v7 Segmentation
  • 【八大排序】选择排序 | 堆排序 + 图文详解!!
  • C语言贪吃蛇详解
  • go使用gopprof分析内存泄露
  • uniapp中组件库Mask 遮罩层 的使用方法