统一日志管理-Mongo 篇

分布式环境下,统一日志管理变的有些迫切。暂不聊ELK、Flume、Fluentd等技术,首先我想聊的是Log4j。
Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
log4j–log for java(java的日志)
在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。
此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。
说明:下面分为三部分,
第一部分讲解如何配置log4j;
第二部分为对log4j.properties配置文件中的各个属性的讲解;
第三部分为对log4j的详细讲解。
如果只想配置上log4j,那么只需要看前两个部分就可以,如果想对log4j深入了解,则还需看第三部分。
使用的license: Apache License V2.0
具体步骤略,下面进入主题Log4J+Mongo统一日志:

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:

log4j.rootLogger=INFO,stdout,MongoDB
log4j.appender.MongoDB=org.log4mongo.MongoDbAppender
log4j.appender.MongoDB.databaseName=logs
log4j.appender.MongoDB.collectionName=log
log4j.appender.MongoDB.hostname=loghost
log4j.appender.MongoDB.port=27017

注:时区问题:

{‘timestamp’:{“$gt” : ISODate(“2016-5-3 TO02:14:00Z”)}}

MongoDb中存储的时间必须是标准时区的时间格式,这个是无法进行转换的。

你在shell里输入,就会出现如下的类似输出结果。如果在小时上+8,就是当前时区的对应时间了。

new Date()

ISODate(“2016-05-03T02:14:46.872Z”)

虽然存储的是标准市区,但是因为有本地环境和操作系统环境的关系,js还是会进行一些转换的。但是这只是转换,存储的还是标准市区的时间。

posted @ 2016-07-11 22:10  江晓曼博客园  阅读(431)  评论(0编辑  收藏  举报