关闭

MongoDB整合Spring Boot 的logback

标签: mongodblogbacklog
5911人阅读 评论(0) 收藏 举报
分类:

1、pom.xml

       <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.4.2</version>
        </dependency>
       <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.11</version>
        </dependency>
        <dependency>  
            <groupId>ch.qos.logback</groupId>  
            <artifactId>logback-classic</artifactId>  
            <version>1.1.11</version>  
        </dependency> 

2、logback.xml

    <appender name="MONGODB" class="com.lovnx.common.log.appender.MongoDBAppender">
        <DbHost>168.1.1.200</DbHost>
        <DbPort>27017</DbPort>
        <DbName>system_log</DbName>
        <DbCollectionName>log</DbCollectionName>
    </appender>

    <logger name="MONGODB" level="INFO">
        <appender-ref ref="MONGODB"/>
    </logger>  

3、appender

package com.lovnx.common.log.appender;

import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.status.ErrorStatus;

public class MongoDBAppender extends AppenderBase<LoggingEvent> {

    private MongoClient _mongo;
    private MongoCollection<Document> _collection;
    private String _dbHost = "168.1.1.200";
    private int _dbPort = 27017;
    private String _dbName = "logging";
    private String _dbCollectionName = "logging";


    @Override
    public void start() {
        try {
            _mongo = new MongoClient(_dbHost, _dbPort);
            MongoDatabase db = _mongo.getDatabase(_dbName);
            _collection = db.getCollection(_dbCollectionName);
        } catch (Exception e) {
            addStatus(new ErrorStatus("Failed to initialize MondoDB", this, e));
            return;
        }
        super.start();
    }

    public void setDbHost(String dbHost) {
        _dbHost = dbHost;
    }

    public void setDbName(String dbName) {
        _dbName = dbName;
    }

    public void setDbCollectionName(String dbCollectionName) {
        _dbCollectionName = dbCollectionName;
    }

    public void setDbPort(int dbPort) {
        _dbPort = dbPort;
    }


    @Override
    public void stop() {
        _mongo.close();
        super.stop();
    }

    @Override
    protected void append(LoggingEvent event) {
        try{
            Document document = getDocument(event.getFormattedMessage());
            if(document != null){
                _collection.insertOne(document);
            }
        }catch (Exception e) {
            addStatus(new ErrorStatus("日志写入到MongDB出错", this, e));
        }
    }
//这里指定只有json格式的日志才能输入到mongo
    private Document getDocument(String json) {
        try{
            return Document.parse(json);
        }catch (Exception e) {
            return null;
        }
    }
}

4、调用

//两种打日志方式,会更灵活

//这样是传统方式
  private static final Logger LOGGER = LoggerFactory.getLogger(Result.class);
//这样是输入到mongo的方式
  private static final Logger mongoLog = LoggerFactory.getLogger("MONGODB");
0
0
查看评论
发表评论
* 以上用户言论只代表其个人钱柜娱乐开户,不代表CSDN网站的钱柜娱乐开户或立场

Mongodb的日志扩展--logback(顶)

所需的jar包 ch.qos.logback logback-core 1.1.3 ch.qos.logback logback-cl...
  • a137268431
  • a137268431
  • 2016-02-22 16:04
  • 3102

SpringBoot中logback日志保存到mongoDB

前面提到过logback输出日志的多种方式,这一篇看一下自定义Appender,将logback输出的日志保存到mongo中。 自定义Appender非常简单,继承一下AppenderBase类即可...
  • tianyaleixiaowu
  • tianyaleixiaowu
  • 2017-06-16 15:47
  • 2105

logback的mongodb扩展

https://github.com/qos-ch/logback-contrib
  • a137268431
  • a137268431
  • 2016-02-19 15:03
  • 904

使用logback实现日志记录

在开发中打印内容,使用 System.out.println() 和 Log4j 应当是人人皆知的方法了。  其实在开发中我们不建议使用 System.out 因为大量的使用 System.out ...
  • songhaifengshuaige
  • songhaifengshuaige
  • 2017-01-06 14:35
  • 3347

Spring Boot Logback应用日志

日志对于应用程序来说是非常重要的,Spring框架本身集成了不少其他工具,我们自身的应用也会使用到第三方库,所以我们推荐在Spring应用中使用SLF4J/Logback来记录日志。 SLF4J...
  • xiaoyu411502
  • xiaoyu411502
  • 2015-09-08 19:57
  • 35628

Spring boot 使用logback AOP实现HTTP请求日志入MongoDB

Spring boot 使用logback AOP实现HTTP请求日志入MongoDBMongoDB安装与远程访问参考链接–[在ubuntu上安装mongodb] 安装MongoDB 1.1 为软...
  • lin_tuer
  • lin_tuer
  • 2017-10-29 14:02
  • 243

dubbo使用logback输出日志

最近在做dubbo协议扩展,发现dubbo错误信息没有打印。于是跟踪源码发现,dubbo默认使用log4j作为日志输出,而我们项目是采用slf4j来输出日志。 采取以下方式来切换成slf4j: (1)...
  • long243416336
  • long243416336
  • 2015-11-20 15:00
  • 10294

使用logback轻松管理日志

最近才开始在项目中使用logback,有一种相见恨晚的感觉,因为它很轻易的满足了我的几个需求:        1. 配置简单,易于上手        2. 一个日志文件中只能某一个级别的日志    &...
  • mydeman
  • mydeman
  • 2011-08-25 01:34
  • 56908

logback mongodb spring 扩展

使用logbook提高的db输出到mysql时,我发现程序突然慢了很多,就想又能保存又快,想到了使用mongo保存。 看了下官方的给出的扩展,悲哀! 需要配置logbook上配置mongo的连接,又不...
  • lanmingle
  • lanmingle
  • 2015-04-01 16:57
  • 1181

Mongodb的日志扩展--logback(顶)

所需的jar包 ch.qos.logback logback-core 1.1.3 ch.qos.logback logback-cl...
  • a137268431
  • a137268431
  • 2016-02-22 16:04
  • 3102
    个人资料
    • 访问:678606次
    • 积分:6947
    • 等级:
    • 排名:第3863名
    • 原创:107篇
    • 转载:37篇
    • 译文:11篇
    • 评论:208条
    钱柜娱乐开户
    个人联系方式
    更多交流
    最新评论