Spring Boot 学习研究笔记(十八) 添加log4j2日志文件

2023-11-19

Spring Boot  添加log4j2日志文件

 

  对于一个线上程序或者服务而言,重要的是要有日志输出,这样才能方便运维。而日志的输出需要有一定的规划,如日志命名、日志大小,日志分割的文件个数等。在SpringBoot的框架下,会使用log4j2

 

Log4j其实可以理解为log for java,所以是java的日志框架,提供日志服务,而Log4j 2是Log4j的升级版本,性能比logback好。   日志级别优先级从低到高:ALL、DEBUG、 INFO、 WARN、 ERROR、FATAL、 OFF。一般官网建议就使用DEBUG、INFO、WARN和ERROR这四个,但是我们可以加一个ALL最低级别的来进行总日志的输出。日志的等级越高,打出的日志越少。

 

1、添加maven依赖

 

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion><!-- 去除默认配置 -->
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    
        <!-- 支持log4j2日志配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <version>1.5.6.RELEASE</version>
        </dependency>
        <!-- 支持识别yml配置 -->
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-yaml</artifactId>
        </dependency>
​

2、在resouces文件下配置文件

log4j2-spring-dev.xml :开发环境的日志输出配置,可自定义输出路径

log4j2-spring-release.xml:生产环境的日志输出配置,可自定义输出路径

 

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="INFO" monitorInterval="60">
 
    <Properties>
        <Property name="app.name"></Property>
        <Property name="log.home">D:/logs/</Property>
        <!-- <Property name="log.pattern">[%d] [%-5p] [%t] [%c{3.}] [%l] [_] [%m]%n</Property> -->
        <Property name="log.file.charset">UTF-8</Property>
        <Property name="log.file.pattern">
            [%d] [%-5p] [%t] [%c{3.}] %m%n
        </Property>
        <Property name="log.console.charset">UTF-8</Property>
        <Property name="log.console.pattern">
            %d %highlight{%-5p} %style{%pid}{magenta} --- [%15.15t] %style{%-37.37c{36}}{cyan} : %m%n%n
        </Property>
        
    </Properties>
 
    <!--先定义所有的appender -->
    <appenders>
        <!-- 这个会打印出所有的info及以上级别的信息,每次大小超过size,则这size大小的日志会自动存入按年月日建立的文件夹下面并进行压缩,作为存档 -->
        <RollingFile name="FILE_INFO" immediateFlush="false"
            fileName="${log.home}${app.name}/info_${app.name}.log"
            filePattern="${log.home}${app.name}/$${date:MM}/$${date:dd}/info_${app.name}_%d{yyyyMMdd}_%i.log.gz">
            <!-- 只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <Filters>
                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL" />
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <PatternLayout pattern="${log.file.pattern}" charset="${log.file.charset}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <!-- 日志文件归档大小 -->
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了99 -->
            <DefaultRolloverStrategy max="99" />
        </RollingFile>
        
        <RollingFile name="FILE_WARN" immediateFlush="false"
            fileName="${log.home}${app.name}/warn_${app.name}.log"
            filePattern="${log.home}${app.name}/$${date:MM}/$${date:dd}/warn_${app.name}_%d{yyyyMMdd}_%i.log.gz">
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL" />
                <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <PatternLayout pattern="${log.file.pattern}" charset="${log.file.charset}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <DefaultRolloverStrategy max="99" />
        </RollingFile>
        
        <RollingFile name="FILE_ERROR" immediateFlush="false"
            fileName="${log.home}${app.name}/error_${app.name}.log"
            filePattern="${log.home}${app.name}/$${date:MM}/$${date:dd}/error_${app.name}_%d{yyyyMMdd}_%i.log.gz">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="${log.file.pattern}" charset="${log.file.charset}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <DefaultRolloverStrategy max="99" />
        </RollingFile>
        
        <!-- 控制终端输出 -->
        <Console name="STDOUT" target="SYSTEM_OUT">
            <Filters>
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <PatternLayout pattern="${log.console.pattern}" charset="${log.console.charset}" />
        </Console>
    </appenders>
 
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>
        <!-- 配置日志的根节点 -->
        <Root level="INFO">
            <appender-ref ref="FILE_ERROR" />
            <appender-ref ref="FILE_WARN" />
            <appender-ref ref="FILE_INFO" />
            <appender-ref ref="STDOUT" />
        </Root>
        <!-- 第三方日志系统 -->
        <logger name="org.springframework.web" level="WARN"/>
        <logger name="org.springboot.sample" level="WARN" />
    </loggers>
 
</configuration>
​

 

3、关联日志输出文件

​
#配置日志
logging.config=classpath:log4j2-spring-release.xml
#logging.config=classpath:log4j2-spring-dev.xml

 

4、输出日志测试运行

将在配置的日志输出目录,生成对应的配置文件

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 学习研究笔记(十八) 添加log4j2日志文件 的相关文章

随机推荐

  • 4. Spring Boot Security角色管理持久化实现

    1 概述 在第三章里大家学会了怎么初步使用Spring Boot 结合Spring Security来实现权限控制和角色管理 但是我们发现无论是使用那种方式角色管理和权限控制全部是在 xml中或则 配置类中写的 没有实现持久化 本次就为大家
  • Conversion to Dalvik format failed with error

    Conversion to Dalvik format failed with error 1解决方法 第一种情况包导入错误 点击工程 gt build path gt libraries gt 选中android1 x 或者android
  • 解决 Android App 上架 Google play后 ,签名变更,第三方sdk无法登录

    1 将google 管理后台的 sha 1 证书值 记录下来 2 根据Google sha 1 证书值 获取 Facebook 的登录需要使用的散列值 使用以下工具 http tomeko net online tools hex to b
  • MySQL——idea连接MySQL

    选择MySQL 连接数据库 选择数据库 编写SQL语句
  • Anaconda 命令行常用指令

    Anaconda 命令行指令 Anaconda Prompt 命令行 一 基础指令 1 查看Anaconda安装版本 conda version 2 查看已经安装的环境 conda env list 方法1 conda info env 方
  • 网络基础知识

    网络编程 2 网络的体系结构 七层模型 四层模型 因为网络通信比较麻烦 所以网络采用分层思想 OSI开放系统互联网模型 七层模型 高层 应用层 表示层 会话层 低层 传输层 网络层 数据链路层 物理层 驱动 网卡 仅仅是一种理想状态 现实中
  • 文本情感分析竞赛(首次提交排名第6)

    之前花了半个小时做了个DataCastle上的基础竞赛题 然后提交结果后直接第六名 因此来分享一下 该文章之前记录在我的公众号上 原文链接 https mp weixin qq com s nIJ2begF2 5i WnT1PEM3w 数据
  • 变量的存储类型 auto register extern static

    说明 在C语言中 变量和函数都有数据类型和存储类型两个属性 数据类型规定了取值范围和运算 存储类型规定了占用内存的方式 变量的存储类型可分为静态存储和动态存储 静态存储 生命周期为程序的运行时间 动态存储 动态分配内存 用完就放 内存的区域
  • 每日一问:你想如何破坏单例模式?

    前言 1 单例是什么 单例模式 是一种创建型设计模式 目的是保证全局一个类只有一个实例对象 分为懒汉式和饿汉式 所谓懒汉式 类似于懒加载 需要的时候才会触发初始化实例对象 而饿汉式正好相反 项目启动 类加载的时候 就会创建初始化单例对象 1
  • ThreadLocal的理解和使用

    1 ThreadLocal初步 早在JDK 1 2的版本中就提供java lang ThreadLocal ThreadLocal为解决多线程程序的并发问题提供了一种新的思路 使用这个工具类可以很简洁地编写出优美的多线程程序 ThreadL
  • LightGBM算法详解(教你一文掌握LightGBM所有知识点)

    LightGBM Light Gradient Boosting Machine 是一款基于决策树算法的分布式梯度提升框架 为了满足工业界缩短模型计算时间的需求 LightGBM的设计思路主要是两点 减小数据对内存的使用 保证单个机器在不牺
  • Ubuntu 切换工作区快捷键失效

    首先安装 Compiz Config Settings Manager sudo apt get install compizconfig settings manager 在 桌面 板块下勾选Desktop Wall 以启用 点开Desk
  • 信息安全管理(CISP)—— 部分重点内容总结

    目录 一 风险评估方法 定量分析计算 原理 公式 例题 二 风险评估要素之间的关系 三 GB Z 24364 2009信息安全风险管理指南 四阶段 两过程 四 能力成熟度模型SSE CMM 域维 能力维 五 等级保护2 0的工作流程 系统定
  • 利用Intellij IDEA创建Spring的Helloworld

    引言 Spring 作为一款轻量级的框架 自然会赢得大多数开发者的信赖 笔者今天也开始学习Spring框架了 那么如何利用当今非常火的IDEA来开发Spring呢 按照国际惯例 先从Spring的HelloWorld开始吧 准备环境 Int
  • validation query

    public static void mySQLConfigPlugin Plugins me C3p0Plugin dbplugin createC3p0Plugin DruidPlugin dbplugin createDruidPlu
  • sql优化

    SQL总结 优化部分 1 应尽量避免在 where 子句中使用 或 lt gt 操作符 否则将引擎放弃使用索引而进行全表扫描 2 对查询进行优化 应尽量避免全表扫描 首先应考虑在 where 及 order by 涉及的列上建立索引 3 应
  • 模糊数学Python(一)模糊运算

    代码 import numpy as np def istype a 判断模糊矩阵a的类型 a np array a s np eye a shape 0 a shape 1 if a gt s all and a T a all retu
  • 安装12.04lts的两个问题总结

    因为在win7下有很多bug 老师叫我用Linux来完成项目的最后一步 啊啊啊 之前一直是在虚拟机里面搞 安装Ubuntu的过程中遇到了好多个问题 好吧好吧 下面总结一下 让遇到同样问题的朋友少走点弯路吧 1 分区问题 建立 主分区 之后
  • 数据操作之-dataframe常见操作:取行、列、切片、统计特征值

    import numpy as np import pandas as pd from pandas import from numpy import data DataFrame np arange 16 reshape 4 4 inde
  • Spring Boot 学习研究笔记(十八) 添加log4j2日志文件

    Spring Boot 添加log4j2日志文件 对于一个线上程序或者服务而言 重要的是要有日志输出 这样才能方便运维 而日志的输出需要有一定的规划 如日志命名 日志大小 日志分割的文件个数等 在SpringBoot的框架下 会使用log4