收到大哥的一个要求:要用log4j2来记录开发过程中产生的信息,并以天为单位,保存日志文件;七天为一个周期。

听到这个需求,心里直打鼓,怎么做啊;

学习了一圈下来以后,也算是完成了这个任务安排;

乘机写下这篇博文,记录自己的实操过程,仅当复盘思路整理使用;

log4j2  一个用来记录操作过程,并汇总成日志的东西,同类的产品还有logback、log4j;

为什么选择log4j2?

因为快、可靠、丢记录丢的少;好,打住,不继续深入。

怎么在springboot项目中集成log4j2?

写一个配置文件就好;

配置文件写哪里?

放在resources文件夹下就好,跟springboot的配置文件(application.properties)同级,

文件名称写成log4j2-spring.xml;

这个命名写成这样,就不用去springboot的application.properties里面再配置路径了。偷个懒。

(这里多写两句,做个备注:log4j2的配置文件可以是xml格式的,也可以是properties格式的,也可以是yml格式的,只不过一开始是xml格式的,所以接受度比较广,网上能找到的用xml来配置的资料也比较多)

在用log4j2的时候,在pom文件里引入依赖,不过springboot的“web启动”依赖里面也带了日志记录的工具logging,所以在引入依赖的时候,要把“web启动”依赖里面的logging摘出来。

否则会报依赖冲突,有复数的可以用来记录、生成的日志的工具,咱们的程序不知道要用哪一个。

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><!--刨去spring本身的日志记录配置--><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency><!--引入log4j2日志--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><!--刨去spring本身的日志记录配置--><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion></exclusions></dependency>

pom文件中有提到一个叫slf4j的东西,这个就是log4j2的门面啦,就相当于管家一样的角色,在lombok这个插件里面,有用到一个叫@slf4j的注解,一般打在【类】上头,就表明给这个【类】提供一个用来记录日志的对象--log;一般是可以直接使用的,非常方便。

依赖导入好了,就可以开始写log4j2的配置文件了。

log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?><Configuration status="OFF"><properties>
<!--        基础配置:文件的名称、日志的输出路径、字符集、输出格式--><Property name="appName">personal_program</Property><property name="logPath">D:\personalProgram\personal_program_log</property><Property name="logFileCharset">UTF-8</Property><property name="logFilePattern">%highlight{%d{yyyy-MM-dd HH:mm:ss} [%5p] [%t] [%l] - %m%n}{FATAL=white, ERROR=red, WARN=blue, INFO=Green, DEBUG=Yellow, TRACE=blue}</property></properties><Appenders>
<!--        日志输出一号:控制台输出 ,日志记录级别:DEBUG; 输出格式:延续基础配置--><Console name="ConsoleLog" target="SYSTEM_OUT"><ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY" /><PatternLayout pattern="${logFilePattern}" /></Console>
<!--        日志输出二号:以文件的形式输出,日志记录级别:ERROR; 输出格式:延续基础配置文件的生成策略:大小不超过10MB,每天记录;最大日志文件数量为30;理想情况下是保存一个月内的ERROR报错信息--><RollingFile name="FILE_ERROR"fileName="${logPath}/${appName}_error.log"filePattern="${logPath}/$${date:yyyy-MM-dd}/${appName}_error_%d{yyyy-MM-dd}_%i.log.gz"><ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" /><PatternLayout pattern="${logFilePattern}" charset="${logFileCharset}" /><Policies><SizeBasedTriggeringPolicy size="10MB" />
<!--                以时间为单位的策略;粒度粗细跟【filePattern】里的时间设定有关,目前是%d{yyyy-MM-dd} ,interval="1",所以时间策略就是每天如果是%d{yyyy-MM-dd HH-mm} ,interval="1",则时间策略就是每分钟--><TimeBasedTriggeringPolicy interval="1"/></Policies><DefaultRolloverStrategy max="30"/></RollingFile>
<!--        日志输出三号:以文件的形式输出,日志记录级别:INFO;输出格式:延续基础配置--><RollingFile name="FILE_INFO"fileName="${logPath}/${appName}_info.log"filePattern="${logPath}/$${date:yyyy-MM-dd}/${appName}_info_%d{yyyy-MM-dd HH-mm}_%i.log.gz">
<!--            过滤策略,上限WARN,下限INFO--><levelRangeFilter minLevel="WARN" maxLevel="info" onMatch="ACCEPT" onMismatch="DENY" /><PatternLayout pattern="${logFilePattern}" charset="${logFileCharset}" /><Policies><SizeBasedTriggeringPolicy size="10KB" /><TimeBasedTriggeringPolicy modulate="true" interval="2" /></Policies><DefaultRolloverStrategy max="30"/></RollingFile></Appenders><Loggers><logger name="com.zaxxer.hikari.pool.PoolBase" level="ERROR"/><logger name="com.zaxxer.hikari.pool.HikariPool" level="ERROR"/><logger name="com.zaxxer.hikari.HikariDataSource" level="ERROR"/><logger name="org.springframework.jdbc.datasource" level="ERROR"/><!--根记录器--><Root level="debug"><appender-ref ref="ConsoleLog" /><appender-ref ref="FILE_INFO" /><appender-ref ref="FILE_ERROR" /></Root></Loggers>
</Configuration>

配置好以后,运行自己的项目,记得打上@slf4j的注解,然后就可以看到效果了。

SpringBoot+log4j2的思路记录,实现每天输出日志文件相关推荐

  1. nohup 不输出日志文件方法

    这里写目录标题 1. nohup 不输出日志文件方法 1.1. 场景描述 1.2. 解决思路 1.3. 操作示例 1.4. 关于 Linux 的重定向 2. linux 后台执行命令: & 与 ...

  2. Android捕捉崩溃日志并输出日志文件

    Android捕捉崩溃日志并输出日志文件 当程序与运行时发生崩溃,可以捕捉到当前崩溃的日志信息并写入文件保存到指定的目录下.这里还做了最大文件数量限制,超过数量即删除旧日志文件. import jav ...

  3. C#输出日志文件——log4net组件

    C#输出日志文件--log4net组件 前言 最近在写一个Winform项目,发现不知道怎么查看相关的输出信息来判断逻辑,经过一番搜索终于了解到这个一个非常好用的组件--log4net. log4ne ...

  4. SiftingAppender:将不同的线程记录到不同的日志文件中

    Logback的一项新颖功能是SiftingAppender ( JavaDoc ). 简而言之,它是一个代理附加器,它为给定运行时属性的每个唯一值创建一个子附加器. 通常,此属性来自MDC . 这是 ...

  5. slf4j没有在linux中生成日志,slf4j日志记录问题 - 未生成日志文件

    我正在使用slf4j通过java实用程序日志记录.我试图放置logging.properties文件,以便它会被我的web应用程序拾取.以下是我的logging.properties文件怎么样子:sl ...

  6. linux 启动 不打印日志文件,Linux nohup不输出日志文件的方法

    最近在Linux上部署视频流推送应用时,由于网络不稳定等原因程序会不断的输出错误信息,结果导致程序运行一天下来日志文件直接占满磁盘,解决方法就是不再输出日志文件,命令如下: 只输出错误信息到日志文件: ...

  7. linux后台启动,不输出日志文件

    nohup命令 nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行. nohup 命令,在默认情况下(非重定向时),会输出一个名叫 noh ...

  8. springboot 打印乱码_Springboot中使用logback输出日志中文乱码

    在Springboot中使用logback输出日志时,中文变成了?乱码,第一反应是编码问题. 解决方法: 设置charset, 在encoder 中增加一行 UTF-8,重新启动系统,日志中中文显示正 ...

  9. mysql tee_MySQL 使用tee记录语句和输出日志

    在mysql命令行中,使用tee命令,可以记录语句和输出到指定文件.在debugging时会很有用. 每执行一条语句,mysql都会讲执行结果刷新到指定文件.Tee功能只在交互模式生效. mysql& ...

最新文章

  1. pyqt5动态添加按钮
  2. javascript的垃圾回收机制
  3. android 4.4从图库选择图片,安卓6.0,从系统图库选择照片,裁剪,并显示的问题。...
  4. 【机器学习基础】关于Scikit-Learn,你不一定知道的10件事
  5. Docker最全教程——数据库容器化之持久保存数据(十一)
  6. linux检查磁盘空间使用情况df 命令
  7. 阿里P7架构师谈职业生涯规划,给遇到瓶颈,迷茫期的人群一些建议
  8. linux运算_CentOS「linux」学习笔记22:算术运算符、逻辑运算符、关系运算符
  9. 即将发版!Apache Flink 1.9 版本有哪些新特性?
  10. cmake 常用变量和常用环境变量
  11. 无意中发现的一份清华大佬的代码模版,简洁易懂!
  12. jquery的extend和fn.extend
  13. find和xargs
  14. 最难的几道Java面试题,看看你跪在第几个?
  15. 【刷题第七天】leetcode611.有效三角形的个数
  16. ie11 java提示升级,解决IE11安装升级失败和在安装前需要更新的问题
  17. [生存志] 第14节 历代大事件概览 西汉
  18. php汉字转拼音百家姓版,百家姓详(带拼音).ppt
  19. JAVA.犹抱琵琶半遮面
  20. ElementUI el-input 设置 type 类型为 number 时,如何去掉上下指示箭头

热门文章

  1. 常见User-Agent大全
  2. R语言计算31省份(除港澳台地区)省会城市的球面距离代码
  3. Google Earth Engine(GEE)——MODIS NDVI 时空动态变化的动态图下载案例
  4. JS-Cookie操作
  5. 足不出户就能购遍全球?亚马逊中国Prime会员日即将开启
  6. k8s-核心概念与API原语
  7. 网易云信携手铢铢 App,率先提出「免费婚恋模式」:谈情说爱就应该免费!
  8. springboot+vue+java服装定制商城系统源码介绍
  9. 5大新锐品牌自播GMV创历史新高,背后的逻辑是什么?
  10. 解锁WiFi密码,我只用了60行代码....