MongoDB-08-log4j2
2017年5月31日大约 1 分钟
日志入库
实现方式
有两种方式:
自定义 appender
使用官方定义好的 appender
实战
环境:
jdk: 1.8
mongodb: 3.4.4 (未设置登录密码)
jar 引入
按照官方 demo, log4j2 版本为: 2.11.0
。
org.apache.logging.log4j
log4j-api
2.11.0
org.apache.logging.log4j
log4j-core
2.11.0
org.apache.logging.log4j
log4j-mongodb3
2.11.0
org.mongodb
mongo-java-driver
3.4.2
log4j 配置
测试简单方法
- LogMain.java
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class LogMain {
private static Logger LOG = LogManager.getLogger(LogMain.class);
public static void main(String[] args) {
LOG.error("error");
}
}
运行 main()
即可。
- 查询入库信息
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import org.junit.Test;
public class MongoDbLogTest {
@Test
public void findDocumentTest() {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("applicationDb");
MongoCollection collection = mongoDatabase.getCollection("applicationLog");
//检索所有文档
FindIterable findIterable = collection.find();
for (Document aFindIterable : findIterable) {
System.out.println(aFindIterable);
}
}
}
日志如下:
{% raw %}
Document{{_id=5b529b07ebea9a99670e090b, level=ERROR, loggerName=com.github.houbb.mongdb.log.LogMain, message=error, source=Document{{className=com.github.houbb.mongdb.log.LogMain, methodName=hello, fileName=LogMain.java, lineNumber=27}}, marker=null, threadId=1, threadName=main, threadPriority=5, millis=1532140295301, date=Sat May 31 10:31:35 CST 2017, thrown=null, contextMap=Document{{}}, contextStack=[]}}
{% endraw %}
总结
实际使用中,可以使用 mongodb 做 warn 以上日志信息,或者重要的日志信息记录。
便于分析查询。
- 2.11.0 以前的版本如何使用?
本质只是一个 Log4j2 Appender,我们可以自定义一个。
可以参考源码中的 MongoDbProvider
贡献者
binbin.hou