作为项目的一部分,log4mongo-java-0.7.4用于登录到mongodb 2.x,它工作正常。现在我们必须支持MongoDB 3.x.但是使用具有mongo-java-driver-3.2.1.jar依赖性的log4mongo-java-0.7.4 jar,不支持登录MongoDB 3.x。
任何人都可以帮我解决log4mongo-java jar的问题吗?
答案 0 :(得分:1)
调试代码一段时间后,我能够解决这个问题。由于Mongo 3.x的身份验证机制与2.x中的身份验证机制不同,因此必须按照以下方式修改MongoDbAppender.java中的getMongo()方法。
protected Mongo getMongo(String hostname, String port, String userName, String password, String databaseName)
throws UnknownHostException
{
String authMech = "SCRAM-SHA-1";
if ((this.version != null) && (this.version.contains("2."))) {
authMech = "MONGODB-CR";
}
MongoClientURI uri = new MongoClientURI("mongodb://" + userName + ":" + password + "@" + hostname + ":" + port + "/?authSource=" + databaseName + "&authMechanism=" + authMech);
MongoURI mongoUri = new MongoURI(uri);
return new Mongo(mongoUri);
}