首页 > 数据库 >利用log4j+mongodb实现分布式系统中日志统

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

时间:2022-12-19 23:01:43浏览次数:67  
标签:MongoDB mongodb log4j 分布式系统 action 日志 appender


背景

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

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客户端系统,查看日志情况:

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

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

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

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

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

mongodb的部署方式

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

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

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

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

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



 

标签:MongoDB,mongodb,log4j,分布式系统,action,日志,appender
From: https://blog.51cto.com/u_13991401/5954014

相关文章

  • MongoDB 强制使用索引 hint
    转载请注明出处:虽然MongoDB查询优化器一般工作的很不错,但是也可以使用hint()来强迫MongoDB使用一个特定的索引。在这种方法下某些情形下会提升性能。一个有......
  • MongoDB 索引类型介绍
    转载请注明出处:目录1.单字段索引2.复合索引3.多key索引4.其他类型索引5.索引额外属性6.MongoDB索引相关的常用sql命令Mo......
  • 19、electron log4js写日志
    环境:"devDependencies":{"electron":"^22.0.0"},"dependencies":{"@electron/remote":"^2.0.9","log4js":"^6.7.1"}1、安装:npminst......
  • MongoDB从入门到实战之MongoDB简介
    前言相信很多同学对MongoDB这个非关系型数据库都应该挺熟悉的,在一些高性能、动态扩缩容、高可用、海量数据存储、数据价值较低、高扩展的业务场景下MongoDB可能是我们......
  • 《MongoDB大数据处理权威指南》读书笔记
    我们总是喜欢拿“顺其自然”来敷衍人生道路上的荆棘坎坷,却很少承认,真正的顺其自然,其实是竭尽所能之后的不强求,而非两手一摊的不作为。--知乎  2020.08.1 mongoDB......
  • .NET Core应用如何通过SSL访问MongoDB?
    大家好,我是Edison。最近有一个ASP.NETCore通过SSL证书访问MongoDB的需求,但是在网上发现资料很少,于是调查了一番,做了如下的笔记,希望对你有用。背景在实际场景中,开发环境......
  • M1 MacBook pro 配置mongodb(转载cv)
    https://blog.csdn.net/qq991658923/article/details/121436106bb一下:新mac到了,配置完用的真的舒服,主机笔电双持ing。很难想象pro都这么强劲,那些用max32+1T的大神们原地......
  • 分布式系统中的“无状态”和“有状态”详解
    「数据一致性」和「高可用」其实本质是一个通过提升复杂度让整体更完善的方式。本文主要讲一些让系统更简单,更容易维护的东西——「易伸缩」,首当其冲的主题就是「stateless......
  • golang操作数据库-mysql&mongodb
    安装驱动goget-ugithub.com/go-sql-driver/mysql初始化模块gomodinitm执行gomodtidygomodtidy导入驱动packagemainimport"fmt"database/sq1'"github.com/go-sql-......
  • linux安装mongodb并做分片集群
    linux安装mongodb并做分片集群安装mongodb我们先去官网下载对应的版本,我这里选择的是4.0.0tgz版本在linux下解压打开sudotar-zxvfmongodb-linux-x86_64-4.0.0.t......