1、继承UnsynchronizedAppenderBase

package com.xf.config;

import java.util.Map;

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.util.StringUtils; import com.alibaba.fastjson.JSONObject; import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.UnsynchronizedAppenderBase;
import cn.hutool.extra.spring.SpringUtil;
import lombok.Data; @Data
public class MongoDBAppender extends UnsynchronizedAppenderBase<LoggingEvent> { private MongoTemplate mongoTemplate; String appName;
String collectionName; @Override
protected void append(LoggingEvent e) {
if (mongoTemplate == null)
mongoTemplate = SpringUtil.getBean(MongoTemplate.class);
JSONObject obj = new JSONObject();
obj.put("appName", appName);
obj.put("Level", e.getLevel().toString());
obj.put("Message", e.getFormattedMessage());
obj.put("TimeStamp", e.getTimeStamp());
obj.put("Class", e.getCallerData()[0].toString());
Map<String, String> map = e.getMDCPropertyMap();
map.forEach((k, v) -> {
obj.put(k, v);
});
if (StringUtils.isEmpty(collectionName))
mongoTemplate.save(obj, "wjflog");
else
mongoTemplate.save(obj, collectionName);
}
}

2、xml配置

    <appender name="MONGODB" class="com.xf.config.MongoDBAppender">
<appName>odvapi</appName>
<collectionName>mylog</collectionName>
</appender>

3、mongdb配置

spring:
data:
mongodb:
database: test
port: 27017
host: 127.0.0.1

logback日志输出到mongodb的更多相关文章

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

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

  2. [日志] spring boot + logback 日志输出配置

    一.输出日志到控制台 springboot有很多starter(参考starter)方便快速构建项目依赖组件,logback是springboot默认的日志组件,启动即可看到打印在控制台输出的info ...

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

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

  4. vscode springboot logback 日志输出到不同文件

    参照了:https://blog.csdn.net/appleyk/article/details/78717388# 在src\main\resources中新建一个logback-boot.xml ...

  5. Logback日志输出到ELK

    用docker-compose本机部署elk docker-compose.yml version: "3" services: es01: image: docker.elast ...

  6. logback日志输出至数据库

    我们知道将数据库输出到不同的地方需要使用不同的appender表示,那下面了解一下输出到数据库的DBAppender. 1.DBAppender 由于DBAppender会把记录写到数据库中,因此我们 ...

  7. SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面

    前言 SpringBoot对所有内部日志使用通用日志记录,但保留底层日志实现.为Java Util Logging.Log4J2和Logback提供了默认配置.在不同的情况下,日志记录器都预先配置为使 ...

  8. logback KafkaAppender 写入Kafka队列,集中日志输出.

    为了减少应用服务器对磁盘的读写,以及可以集中日志在一台机器上,方便使用ELK收集日志信息,所以考虑做一个jar包,让应用集中输出日志 网上搜了一圈,只发现有人写了个程序在github 地址:https ...

  9. logback不输出日志消息,且SLF4J绑定源错误

    我之前的项目已经成功使用过logback作为日志输出,但是今天新项目在使用的时候,不输出日志信息. 最后终于找到问题所在,并成功解决.解决步骤如下: 第一步:检查pom.xml 按照以往惯例,我先检查 ...

  10. logback异步输出日志(生产者消费者模型),并非批量写入日志。

    一直对logback异步输出日志误解为异步批量写入日志. 今天看了源代码. 首先logback的异步日志是如何配置的: <!-- 管理端用户行为日志异步输出,异步的log片段必须在同步段后面,否 ...

随机推荐

  1. WSL下的Ubuntu 18.04LTS配置软件源和系统更新

    WSL下的Ubuntu 18.04LTS配置软件源和系统更新 设置系统语言为中文 # 安装中文支持 sudo apt-get install -y language-pack-zh-hans # 设置 ...

  2. OpenCV之C++经典案例

    四个案例实战 1.刀片缺陷检测 2.自定义对象检测 3.实时二维码检测 4.图像分割与色彩提取 1.刀片缺陷检测 问题分析 解决思路 尝试二值图像分析 模板匹配技术 代码实现 #include < ...

  3. springMVC环境的搭建(一)

    概要: MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). MV ...

  4. 【Java SE进阶】Day06 线程、同步

    一.线程 1.多线程原理 流程图 内存图解说明 创建线程的方式 继承Thread类 实现 Runnable接口 2.继承Thead类 3.实现Runnable接口 实现接口,重写run方法 最终均需要 ...

  5. 编程思想的转变 软件开发目录规范 collections、time、datetime、 random模块

    目录 编程思想的转变 软件目录开发规范(重要) 内置模块:collections模块 简介 具名元组 namedtuple 实现二维坐标系 实现扑克牌 队列与堆栈 collection.deque() ...

  6. 组件封装----useImperativeHandle和ref

    useImperativeHandle(ref, createHandle, [deps]) 作用: 减少暴露给父组件获取的DOM元素属性, 只暴露给父组件需要用到的DOM方法 参数1: 父组件传递的 ...

  7. 【JVM】根节点枚举与安全点

    本文已收录至Github,推荐阅读 Java随想录 微信公众号:Java随想录 CSDN: 码农BookSea 转载请在文首注明出处,如发现恶意抄袭/搬运,会动用法律武器维护自己的权益.让我们一起维护 ...

  8. js 非空判断

    是否为 null 是否为 "" 是否为空字符串(引号中间有空格)  如: "     ". 制表符.换行符.换页符和回车 一. 字符串 1. if(str == ...

  9. ClickHouse数据副本引擎

    我的gitee地址:https://gitee.com/ddxygq/bigdata-technical-pai ,相关文章都放到这个仓库里了. 只有 MergeTree 系列里的表可支持副本: Re ...

  10. JavaScript:严格模式"use strict"

    因为历史遗留问题,JS其实存在很多feature,以及兼容性问题: 所以JS在ES5之后,新增了一个严格模式,以区别于普通模式,用来激活新的特性,使得某些代码的执行准确无误: 如何开启严格模式? 在J ...