添加自定义属性类

package com.cus.config;

import ch.qos.logback.core.PropertyDefinerBase;
import org.springframework.stereotype.Component; import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.Date; @Component
public class CustomProperty extends PropertyDefinerBase { @Override
public String getPropertyValue() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String str = sdf.format(new Date());
try{
InetAddress address = InetAddress.getLocalHost();
str = address.getHostAddress() + "_" + str;
}
catch (Exception e){
e.printStackTrace();
} return str;
}
}

在 logback.xml 中使用自定义属性

定义属性:

<define name="port" class="com.cus.config.CustomProperty" />

使用定义的属性:

${port}
<file>${LOG_HOME}/info_${port}.log</file>
<?xml version="1.0" encoding="UTF-8"?>
<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<jmxConfigurator/>
<define name="port" class="com.cus.config.CustomProperty" />
<!--<property name="LOG_FILE" value="/opt/logs/connectivity"/>-->
<property name="LOG_FILE" value="D:/logs/connectivity"/>
<!--启动File Loader时需要修改Log文件的目录为/aplog/fileLoader -->
<!--<property name="LOG_FILE" value="/aplog/fileLoader"/>-->
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
<property name="LOG_HOME" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-./tmp}}/}}"/>
<!-- 最大保存历史日志天数 -->
<property name="LOG_MAX_HISTORY" value="30"/>
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{yyyy-MM-dd HH:mm:ss.SSS} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> <!--读取配置中心的属性-->
<springProperty scope="context" name="dataSourceClass" source="portal-manager.datasource.type"/>
<springProperty scope="context" name="driverClassName" source="portal-manager.datasource.driver-class-name"/>
<springProperty scope="context" name="url" source="portal-manager.datasource.url"/>
<springProperty scope="context" name="username" source="portal-manager.datasource.username"/>
<springProperty scope="context" name="password" source="portal-manager.datasource.password"/> <!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<FileNamePattern>${LOG_HOME}/job_stdout_${port}.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<!--<withJansi>true</withJansi>-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender> <!-- 消息日志,记录项目所有消息记录 -->
<appender name="infoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 如果指定了file属性,当天的文件名为file属性值 -->
<file>${LOG_HOME}/info_${port}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/info_${port}.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>200MB</maxFileSize>
<totalSizeCap>8GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender> <!-- 消息日志,记录项目所有消息记录 -->
<appender name="warnLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 如果指定了file属性,当天的文件名为file属性值 -->
<file>${LOG_HOME}/warn_${port}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/warn_${port}.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>200MB</maxFileSize>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level><!-- 只接收错误级别的日志 -->
</filter>
</appender> <!-- 错误日志,记录项目标识的错误级别信息 -->
<appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/error_${port}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/error_${port}.log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>100MB</maxFileSize>
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender> <appender name="DBAppender" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
<dataSource class="${dataSourceClass}">
<driverClassName>${driverClassName}</driverClassName>
<url>${url}</url>
<username>${username}</username>
<password>${password}</password>
</dataSource>
</connectionSource>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender> <!-- 消息日志,记录项目所有消息记录 -->
<appender name="debugLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 如果指定了file属性,当天的文件名为file属性值 -->
<file>${LOG_HOME}/debug_${port}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>${LOG_HOME}/debug_${port}.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxHistory>${LOG_MAX_HISTORY}</maxHistory>
<maxFileSize>400MB</maxFileSize>
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender> </included>

SpringBoot logback 配置文件自定义属性的更多相关文章

  1. SpringBoot Logback配置,SpringBoot日志配置

    SpringBoot Logback配置,SpringBoot日志配置  SpringBoot springProfile属性配置 ================================ © ...

  2. 利用SpringBoot+Logback手写一个简单的链路追踪

    目录 一.实现原理 二.代码实战 三.测试 最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简 ...

  3. springboot+logback日志输出企业实践(下)

    目录 1.引言 2. 输出 logback 状态数据 3. logback 异步输出日志 3.1 异步输出配置 3.2 异步输出原理 4. springboot 多环境下 logback 配置 5. ...

  4. springboot+logback日志输出企业实践(上)

    目录 1.引言 2.logback简介 3. springboot默认日志框架-logback 3.1 springboot示例工程搭建 3.2 日志输出与基本配置 3.2.1 日志默认输出 3.2. ...

  5. SpringBoot:配置文件及自动配置原理

    西部开源-秦疆老师:基于SpringBoot 2.1.6 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! SpringBoot ...

  6. SpringBoot Logback无法获取配置中心属性

    SpringBoot Logback无法获取配置中心属性 前言 最近在做项目中,需要把项目中的日志信息通过RabbitMQ将规定格式的消息发送到消息队列中,然后ELK系统通过消息队列拿日志并且保存起来 ...

  7. SpringBoot基础学习(二) SpringBoot全局配置文件及配置文件属性值注入

    全局配置文件 全局配置文件能够对一些默认配置值进行修改.SpringBoot 使用一个名为 application.properties 或者 application.yaml的文件作为全局配置文件, ...

  8. SpringBoot 属性配置文件数据注入配置和yml与properties区别

    前言 我们知道SpringBoot 通过配置类来解放一堆的xml文件配置,通属性配置文件,来进行,系统全局属性配置,这样极大的简化了我们开发过程,java web 也可以甜甜的从此 快速配置 Spri ...

  9. SpringBoot之配置文件加载位置

    1.SpringBoot启动会扫描application.properties或者application.yml文件作为springboot的配置文件.默认创建项目生成application.prop ...

随机推荐

  1. Codeforces 1324E Sleeping Schedule DP

    题意 给你一个长度为\(n\)的数组\(a\)和3个数字\(h,l和r\).\(t\)初始为0,每次可以使\(t=(t+a_i) \% h\)或者\(t=(t+a_i-1)\%h\),如果这时\(t\ ...

  2. 小程序mpvue中flyio的使用方法

    Fly.js 一个基于Promise的.强大的.支持多种JavaScript运行时的http请求库. 有了它,您可以使用一份http请求代码在浏览器.微信小程序.Weex.Node.React Nat ...

  3. 用Maven给一个Maven工程打包,使用阿里云镜像解决mvn clean package出错的问题,使用plugin解决没有主清单属性的问题

    本来在STS里做了一个极简Maven工程,内中只有一个Main方法的Java类,然后用新装的Maven3.6.3给它打包. 结果,Maven罢工,输出如下: C:\personal\programs\ ...

  4. html基础:css样式2

    1.字体边框基本设置 <!--border边框:solid实线,red红色,1px粗--> <!--font-weight: bolder字体加粗 font-size:字体大小--& ...

  5. linux基础一(目录结构)

    一.linux目录结构 1.根目录/下 bin:用户二进制文件,常用命令都在此目录下 sbin;这个目录下的linux命令通常由系统管理员使用 etc:包含所有程序所需的配置文件,以及服务的启动文件 ...

  6. JS基础回顾_函数

    函数 不要使用C风格的大括号 // log function return1() { return { name: 'oceans', } } function return2() { return ...

  7. Fragment时长统计那些事

    注:本文同步发布于微信公众号:stringwu的互联网杂谈 frament时长统计那些事 页面停留时长作为应用统计的北极星指标里的重要指标之一,统计用户在某个页面的停留时长则变得很重要.而Fragme ...

  8. 第2课 - Hello, DTOS!

    第2课 - Hello, DTOS! 1. 主引导程序 主引导程序是软件还是固件?如果是软件,那么由谁开发?如何开发? (1)上一节说到了固件和软件的区别.由于主引导程序没有在出厂前固化到硬件中,因此 ...

  9. yum 安装提示公钥安装失败,Public key for .x86_64.rpm is not instal 手动导入公钥方案

    Linux 中yum 安装google-chrome-stable时,报错如下,提示公钥安装失败,原因是 GPG公钥获取失败,无法连接获取到 https://dl-ssl.google.com/lin ...

  10. matlab数字图像处理-给图片加入可视水印信息

    将文件夹路径改成了我想要存放代码的文件夹下 然后也是在网上百度,找到了一个代码,敲着模仿了一个 自己建立了一个脚本文件 >>edit test1 然后在脚本中添加 %读取待嵌入水印的图像和 ...