`
1028826685
  • 浏览: 941530 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

利用log4j+mongodb实现分布式系统中日志统

 
阅读更多

背景

    在分布式系统当中,我们有各种各样的WebService,这些服务可能分别部署在不同的服务器上,并且有各自的日志输出。为了方便对这些日志进行统一管理和分析。我们可以将日志统一输出到指定的数据库系统中,而再由日志分析系统去管理。而这个储存日志的数据库目前最适合的还是mongodb,一是因为它轻便、简单,与log4j整合方便,对系统的侵入性低。二是因为它与大型的关系型数据库相比有不少优势,比如查询快速、储存结构(json)利于扩展、免费等。

image

log4j与mongodb整合

1、首先安装mongodb数据库,具体安装方法请百度;

2、在你的应用程序中引用以下类库:

Mongo Java driver jar包 下载 
Log4J jar包 注意版本,一定要1.2.16及以上。 下载 
log4mongo-java jar包 下载

3、在你的web项目中创建log4j.properties文件。

4、配置log4j.properties文件,使之整合mongodb:

   1: log4j.rootLogger=INFO,stdout,MongoDB
   2: 
   3: log4j.appender.MongoDB=org.log4mongo.MongoDbAppender
   4: log4j.appender.MongoDB.databaseName=logs
   5: log4j.appender.MongoDB.collectionName=log
   6: log4j.appender.MongoDB.hostname=ubuntu
   7: log4j.appender.MongoDB.port=27017
   8: 
   9: log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  10: log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  11:  log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

5、配置应用的日志输出格式:

   1: log4j.logger.com.cnblogs.leefreeman.servlet=INFO,action
   2: log4j.appender.action.Threshold = INFO
   3: log4j.appender.action=org.apache.log4j.DailyRollingFileAppender
   4: log4j.appender.action.encoding=utf8
   5:  log4j.appender.action.File=/opt/logs/action.log
   6: log4j.appender.action.DatePattern  =  '_'yyyy-MM-dd'.log'
   7: log4j.appender.action.layout=org.apache.log4j.PatternLayout
   8:  log4j.appender.action.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

6、在应用程序中使用日志:

   1:  public class IndexServlet extends HttpServlet {
   2:      private static Logger logger = Logger.getLogger(IndexServlet.class);
   3:      private static final long serialVersionUID = -5244922269946905057L;
   4: 
   5:     @Override
   6:      protected void doGet(HttpServletRequest req, HttpServletResponse resp)
   7:             throws ServletException, IOException {
   8:         logger.info("hello log4j+mongodb");
   9:         PrintWriter out = resp.getWriter();
  10:         out.print("hello world");
  11:         out.flush();
  12:         out.close();
  13:     }
  14: }

7、通过Mongodb客户端系统,查看日志情况:

image

日志成功写入mongdb数据库,可以看到在数据库中日志的结构相当清晰。

使用日志系统管理mongodb的日志

可以开发一个日志系统连接mongodb数据库,进行日志数据的管理和分析。你也可以使用mongodb目前有的一些Web客户端来管理,下面介绍两个mongodb常用的Web客户端:

mongovision :使用extjs作为前端,体验较好,但需要java7。

image

rock_mongo :基于php的MongoDB管理工具。

image

mongodb的部署方式

在我们数据量不是太大的情况下,并且日志数据的重要性不是太强的时候,我们可以快速搭建出最简单的mongodb单实例模式,来储存日志数据。这种方式最简单最快速。

image

当我们考虑到安全、灾备等因素时,我们一般可以考虑主-从模式搭建mongodb服务器。

image

采用主-从模式后主节点挂掉了后从节点可以接替主机继续服务。这种模式比单节点的高可用性要好很多。

如果有一天数据越来越多,你发现mongodb处理它们越来越吃力,你就得想办法怎么让它减压。一般的做法是,部署多个从节点,来分担主节点压力。在这里我们可以想到Mysql的读写方案,同样也适合Mongodb。

image

关于mongodb各种模式的具体部署配置方法,在这不再介绍有兴趣可以查下资料。此外在面对海量数据时,还有很多针对性较强的集群方案,希望有经验的朋友介绍一下。

 
分享到:
评论

相关推荐

    Log4j+MongoDB 完整实例

    在这个"Log4j+MongoDB完整实例"中,我们将探讨如何利用Log4j收集应用程序日志,并将这些日志有效地存储到MongoDB中进行分析。 首先,Log4j的核心在于其灵活的配置。通过XML或.properties文件,我们可以定制日志级别...

    大型网站日志记录的方案DEMO Elamh+MongoDB ,Log4Net+MongoDB

    在"Log4Net+MongoDB"的DEMO中,Log4Net的输出被配置为写入MongoDB,这样可以在保持日志的可读性和控制性的同时,利用MongoDB的优势进行日志管理。 **整合Elmah和MongoDB**: 1. 首先,需要在项目中引用Elmah和...

    Log4j+MongoDB

    本文将详细介绍如何将Log4j配置来记录日志并将其存储到MongoDB中,以实现高效、可扩展的日志管理系统。 1. **Log4j简介** Log4j是Apache的一个开源项目,提供了一种灵活的日志记录方式。它允许开发者自定义日志...

    mongodb+log4j jar包

    这个"mongodb+log4j jar包"是一个特别组合的包,用于方便地在 Java 应用程序中同时使用 MongoDB 驱动和 Log4j 日志框架。包中包含以下三个关键组件: 1. **log4mongo-java-0.7.4.jar**:这是一个 Log4j 的 Appender...

    syslog收集:eventlog+syslog-ng+mongodb

    "syslog收集:eventlog+syslog-ng+mongodb"这一主题聚焦于如何利用syslog协议,结合Windows的eventlog和syslog-ng日志收集器,以及MongoDB数据库来构建一个高效的日志管理系统。 首先,让我们深入理解syslog协议。...

    Mongodb Log4j整合jar包

    MongoDB和Log4j是两个在Java开发中广泛使用的开源工具。MongoDB是一个高性能、无模式的NoSQL数据库,而Log4j则是Apache组织提供的一个强大的日志记录框架。将两者整合,可以帮助开发者更有效地管理和分析应用程序的...

    logging-log4j2-log4j-2.15.0-rc2.7z

    7. **log4j-flume-ng**:Flume是Cloudera的数据收集工具,这个组件使Log4j能够与Flume协同工作,实现大规模日志数据的收集和传输。新版本可能提升了数据处理的吞吐量和可靠性。 8. **log4j-cassandra**:对于...

    java分布式日志系统.zip

    本压缩包"java分布式日志系统.zip"可能包含了一系列关于如何构建和使用Java实现的分布式日志系统的资料。 1. **日志的重要性** - 错误追踪:当系统出现问题时,日志是排查故障的关键线索,通过查看日志可以定位...

    python3+scrapy+mongodb爬取yy8844全站下载及信息入库.zip

    此外,代码中的"log"可能是为了调试而添加的日志记录,用于追踪爬虫运行时的状态,例如请求的URL、响应的状态码、处理的数据等。在实际部署时,可以删除这些日志以优化性能。 总的来说,这个项目展示了如何使用...

    MongoDB分布式集群搭建

    ### MongoDB分布式集群搭建详解 #### 一、集群与分布式概念 **集群(Cluster)**与**分布式(Distributed)**是两种常见的架构设计模式,用于提高系统的可用性、可伸缩性和性能。 1. **集群(Cluster)** - **定义**:...

    Laravel开发-laravel-mongodb-log

    在Laravel框架中,日志记录是至关重要的一个部分,它可以帮助开发者跟踪应用程序中的错误、...在大型、分布式系统中,这种日志管理方式可以提高日志的可读性、可搜索性和可维护性,对故障排查和性能优化起到重要作用。

    MongoDB分布式集群.pdf

    在MongoDB分布式集群中,副本集的概念是核心组成部分。副本集是由多个mongod实例组成的,每个实例称为一个节点。副本集的主要目的是提供数据的冗余和高可用性,确保数据的持久性和一致性的同时,提供读取操作的负载...

    MongoDB 主从复制,副本集分布式存储

    MongoDB 的分布式存储主要通过 Shard Cluster 实现,但在某些场景下,也可以利用配置服务器 (Config Server) 和 Shard 结合来实现。下面以简单的分布式存储为例进行介绍: 1. **创建相关数据存储目录**: - 创建...

    Java整合ChickHouse的分布式日志收集与检索系统源码.zip

    Java中常见的日志框架有Log4j、Logback和SLF4J等,它们提供了丰富的API供开发者记录日志。 2. **日志收集器(Log Collectors)**:如ChickHouse项目可能就是这样一个日志收集服务。它负责接收来自各个节点的日志...

    如何利用MongoDB存储Docker日志详解

    在现代的分布式系统中,日志管理扮演着至关重要的角色,它能帮助我们追踪系统状态、诊断错误并快速解决问题。Docker作为流行的容器化平台,提供了多种日志管理策略,其中之一就是利用外部日志存储系统如MongoDB来...

    ElasticSearch+Log4net.NoSql

    在IT行业中,日志管理是系统监控和故障排查的关键环节。Elasticsearch、Log4net以及NoSql都是在这个领域中发挥重要作用的技术。本篇将详细阐述如何将这三者结合,实现高效、分布式的日志记录与查询。 **Elastic...

    liunux centos系统mongodb3.2.0的压缩包

    MongoDB 是一个高性能、开源、无模式的分布式文档数据库,被广泛应用于Web应用程序、内容管理系统、数据存储系统等场景。3.2.0 版本是 MongoDB 的一个重要稳定版本,它提供了一系列增强功能和改进,旨在提高性能、...

    centos7 下安装MongoDB

    MongoDB 是一个基于分布式文件存储的开源文档orientated NoSQL 数据库。它使用类似 JSON 的格式来存储数据,使用类似 Unix 的命令来操作数据。 MongoDB 的主要特点是高性能、高可用性和易于扩展。 在 CentOS 7 中...

    java日志数据的采集显示

    在Java中,我们通常使用各种日志框架,如Log4j、SLF4J(Simple Logging Facade for Java)、Logback和Java内置的日志API来记录这些信息。 1. **Log4j**:Log4j是Apache的一个开源项目,提供了丰富的日志记录功能。...

Global site tag (gtag.js) - Google Analytics