Logback 自定义Appender发送预警

2023-11-19

1、自定义Appender

目的:接收日志消息,现将日志通过http接口发送到预警服务

package com.test.service.appender;

import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.UnsynchronizedAppenderBase;
import org.springframework.web.client.RestTemplate;

import java.net.InetAddress;
import java.util.HashMap;
import java.util.Map;

public class HttpLoggerAppender extends UnsynchronizedAppenderBase<LoggingEvent> {

    @Override
    protected void append(LoggingEvent le) {

        try {
		
            String logUrl = context.getProperty("logUrl") + "?endPoint={endPoint}&title={title}&exMsg={exMsg}&level={level}";
            String title = context.getProperty("logTitle");
 

            String port = context.getProperty("logPort");
            String content = le.getFormattedMessage();            

            Map<String, Object> log = new HashMap<>(); 
            log.put("level", le.getLevel().levelStr);
            log.put("exMsg", le.getLevel().levelStr+"-"+le.getLoggerName()+":" +content);
       
            log.put("title", title);
            log.put("endPoint", InetAddress.getLocalHost().getHostAddress() + ":" + port);            RestTemplate restTemplate = new RestTemplate();
            try {
                restTemplate.getForObject(logUrl, String.class, log);

            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

2、修改bootstrap.yaml文件
目的:增加日志自定义参数

logconfig:
  url: http://192.168.0.123/ialarmservice/send
  title: 服务
  port: 8186

3、logback-spring.xml增加配置文件

目的:定义自定义属性为appender使用,定义appender接收日志。

<springProperty scope="context" name="logUrl" source="logconfig.url" defaultValue="test"/>
    <springProperty scope="context" name="logTitle" source="logconfig.title" defaultValue="test"/>

    <springProperty scope="context" name="logconfigPort" source="logconfig.port"/>

    <appender name="warnLog" class="com.test.service.appender.HttpLoggerAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>warn</level>
        </filter>
    </appender>

<springProfile name="test"> 
        <root level="info">
            <appender-ref ref="warnLog"/>
        </root>
    </springProfile>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Logback 自定义Appender发送预警 的相关文章

  • Java将字符串解析为double

    如何解析字符串中的这个 Double 00034800 变成 Double 值 最后两位数字实际上是小数点 所以我正在寻找的结果是348 00 是否有这样的格式可以与十进制格式一起使用 Well String s 00034800 doub
  • 使用 proguard 混淆文件名

    我正在使用 proguard 和 Android Studio 混淆我的 apk 当我反编译我的apk时 我可以看到很多文件 例如aaa java aab java ETC 但我项目中的所有文件都有原始名称 有没有办法混淆我的项目的文件名
  • 在不支持 CAS 操作的处理器上进行 CompareAndSet

    今天 我在一次采访中被问到下一个问题 如果您在具有不支持 CAS 操作的处理器的机器上调用 AtomicLong 的compareAndSet 方法 会发生什么情况 您能否帮我解决这个问题 并在可能的情况下提供一些全面描述的链接 From
  • 为什么在 10 个 Java 线程中递增一个数字不会得到 10 的值?

    我不明白 a 的值为0 为什么 a 不是10 那段代码的运行过程是怎样的 是否需要从Java内存模型来分析 这是我的测试代码 package com study concurrent demo import lombok extern sl
  • 我们可以有条件地声明 spring bean 吗?

    有没有一种方法可以有条件地声明 Spring bean 例如
  • 为什么用scala写的代码比用java写的慢6倍?

    我不确定我在编写 scala 代码时是否犯了一些错误 问题是 The four adjacent digits in the 1000 digit number that have the greatest product are 9 9
  • JOOQ 忽略具有默认值的数据库列

    看来JOOQ完全忽略了数据库列的默认值 既不会更新 ActiveRecord 对象 也不会在 INSERT 时跳过此列 相反 它尝试将其设置为 NULL 这在 NOT NULL 列上失败 Example CREATE TABLE bug f
  • 为什么在将 String 与 null 进行比较时会出现 NullPointerException?

    我的代码在以下行中出现空指针异常 if stringVariable equals null 在此语句之前 我声明了 stringVariable 并将其设置为数据库字段 在这个声明中 我试图检测该字段是否有null值 但不幸的是它坏了 有
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • 如何使用双重调度来分析图形基元的交集?

    我正在分析图形基元 矩形 直线 圆形等 的交互并计算重叠 相对方向 合并等 这被引用为双重调度的一个主要示例 例如维基百科 http en wikipedia org wiki Double dispatch 自适应碰撞算法通常要求 不同的
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • Java 8 Stream,获取头部和尾部

    Java 8 引入了Stream http download java net jdk8 docs api java util stream Stream html类似于 Scala 的类Stream http www scala lang
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • 如何向页面添加 HTML 页眉和页脚?

    如何使用 itext 从 html 源添加标题到 pdf 目前 我们已经扩展了 PdfPageEventHelper 并重写了这些方法 工作正常 但当我到达 2 个以上页面时 它会抛出 RuntimeWorkerException Over
  • 我们如何使用 thymeleaf 绑定对象列表的列表

    我有一个表单 用户可以在其中添加任意数量的内容表对象这也可以包含他想要的列对象 就像在 SQL 中构建表一样 我尝试了下面的代码 但没有任何效果 并且当我尝试绑定两个列表时 表单不再出现 控制器 ModelAttribute page pu
  • 使用 Apache 允许 Glassfish 和 PHP 在同一服务器中协同工作

    是否可以建立从 Java 到 php 文件的桥梁 我有一个用 Java 编写的应用程序 我需要执行http piwik org http piwik org 这是用 PHP 编写的 在服务器中 我正在运行 PHP 但无法从浏览器访问 php
  • 如何让 Firebase 与 Java 后端配合使用

    首先 如果这个问题过于抽象或不适合本网站 我想表示歉意 我真的不知道还能去哪里问 目前我已经在 iOS 和 Android 上开发了应用程序 他们将所有状态保存在 Firebase 中 因此所有内容都会立即保存到 Firebase 实时数据
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ

随机推荐

  • 射发射整改案例

    文章摘录 http www elecfans com emc emi 1244893 html 试验现象 系统在300K 200MHz辐射发射超标 2 诊断过程 1 使用近场探头置于模块显示屏时 1MHz以下频段超标 则低频电磁干扰来源于显
  • pandas 行、列的增删改查

    读取tips xlsx及预览内容 行的增删改查 增加行 直接赋值 可以只写一个值 也可以写列表 df loc 40 1 df loc 40 1 2 3 4 5 6 7 append方法 append 增加行的方法 设置ignore inde
  • 数据结构--图的遍历(广度优先遍历、深度优先遍历)

    目录 图的遍历 广度优先遍历 BFS 广度优先遍历的代码实现 编辑 广度优先遍历序列 编辑 遍历序列的可变性 编辑 BFS算法完整版 编辑 广度优先遍历复杂度分析 广度优先生成树 广度优先生成森林 回顾广度优先遍历 深度优先遍历 DFS 回
  • Opencv项目实战:00 专栏内容介绍

    目录 Opencv项目实战专栏介绍 01 文字检测OCR 02 角度探测器 03 扫描二维码 条形码 04 全景图片拼接 05 物体检测 06 文档扫描仪 07 人脸识别和考勤系统 08 Yolov3更高精度的检测物体 09 物体尺寸测量
  • react-dnd 拖拽能力教程

    前言 近几年来 低代码 零代码的热度在国内逐年递增 复杂度同力一样不会消失 也不会凭空产生 它总是从一个物体转移到另一个物体或一种形式转为另一种形式 用户在使用低零代码构建应用程序时 这些能力只是被平台研发人员提前编写完了 作为低零代码的基
  • Spark 任务调度机制

    1 Spark任务提交流程 Spark YARN Cluster模式下的任务提交流程 如下图所示 图YARN Cluster任务提交流程 下面的时序图清晰地说明了一个Spark应用程序从提交到运行的完整流程 图Spark任务提交时序图 提交
  • 不要一上来就学框架

    问 有两年多前端经验 但感觉自己对后端知之甚少 没有安全感 但是后端语言又多 不知道学哪一门性价比好一些 求教 语言不是重点 尤其是你已经会一门语言的情况下 后端编程最最基本的技术是这些 1 浏览器和服务器是怎么打交道的 重点就是HTTP协
  • Faster RCNN代码详解(四):关于anchor的前世今生

    在上一篇博客中介绍了数据处理的整体结构 Faster RCNN代码详解 三 数据处理的整体结构 这一篇博客介绍数据处理的细节 关于anchor的前世今生 代码在脚本的 mx rcnn rcnn io rpn py的assign anchor
  • React路由懒加载的实现

    React lazy 通过引入lazy Suspense两个方法实现路由懒加载 首先 我们需要在组件中引入lazy Suspense这两个方法 然后我们需要通过Suspense组件 包裹着注册路由 import React Componen
  • 有码变无码:Google Brain 把模糊人脸变成清晰画面

    转自 新浪科技 tech sina com cn it 2017 02 08 doc ifyaexzn9228446 shtml 谷歌旗下人工智能部门 谷歌大脑 设计了一款全新软件 可以把马赛克一样的源图片还原成清晰图片 简而言之 原本 打
  • mapper中resultMap生成器

    public class MybatisUtil 获取bean的属性 根据属性评价 resultMap 并将驼峰修改为 public static String getResultMap Class
  • Vue框架--Ruoyi解析(前端)

    路由router注册 router目录下的 index js 配合 permission js 是整套vue前端项目的权限判断核心 index js 里面的path 配置都是一些不会与权限挂钩的路由 例如 404 登录页面路径等 permi
  • JDK1.8 新特性之常用函数式接口

    目录 常用4种函数式接口 Supplier接口 Consumer接口 Function接口 Predicate 接口 常用的函数式接口主要在java util function包下 函数式接口是Lambda表达式使用的前提 而Lambda表
  • 2023年最详细零基础Python爬虫教程,入门学习分三个阶段

    爬虫Python入门好学吗 学爬虫需要具备一定的基础 有编程基础学Python爬虫更容易学 但要多看多练 有自己的逻辑想法 用Python达到自己的学习目的才算有价值 如果是入门学习了解 开始学习不难 但深入学习有难度 特别大项目 大部分爬
  • 基于Matlab的门控循环单元GRU数据预测

    基于Matlab的门控循环单元GRU数据预测 随着人工智能技术的迅猛发展 数据预测成为重要的挑战之一 门控循环单元GRU是一种新兴的神经网络结构 其在处理序列数据方面具有优异的性能 本文将介绍如何使用Matlab实现门控循环单元GRU进行数
  • Office2016简体中文专业版32/64

    仅供参考 链接 https pan baidu com s 1QklpJzxzWDuFnsXX 6z9SA 提取码 4kd0
  • 黑盒测试与白盒测试的定义与区别

    白盒测试 是指实际运行被测程序 通过程序的源代码进行测试而不使用用户界面 这种类型的测试需要从代码句法发现内部代码在算法 溢出 路径和条件等方面的缺点或者错误 进而加以修正 黑盒测试 又称功能测试 数据驱动测试或基于规格说明的测试 是通过使
  • reactnative环境搭建-windows

    一 安装依赖 1 Node 以下为两种安装方式 1为基本安装 2为通过管理工具安装 1 按照教程步骤安装指定版本的node Node js 安装配置 注意 Node 的版本应大于等于 14 默认安装在C盘 如果自定义安装了其他盘需要配置环境
  • OpenCV入门【C++版】

    OpenCV基础入门 C 语言 Chapter1 读取图片 视频 摄像头 从文件读取图片 从文件读取视频 读摄像头 Chapter2 基础函数 Chapter3 调整和剪裁 Chapter4 绘制形状和文字 Chapter5 透视变换 Ch
  • Logback 自定义Appender发送预警

    1 自定义Appender 目的 接收日志消息 现将日志通过http接口发送到预警服务 package com test service appender import ch qos logback classic spi LoggingE