Description
When creating a configuration for MongoDB3, using a connection factory , it still requires to provide a database name as an argument
log4j2.xml configuration file
<NoSql name="databaseAppender">
<MongoDb3 collectionName="applicationLog" factoryClassName="logger.ConnectionFactory"
factoryMethodName="getNewMongoClient" />
</NoSql>
Error while running
2019-01-20 21:37:20,355 main ERROR Could not create plugin of type class org.apache.logging.log4j.mongodb3.MongoDbProvider for element MongoDb3 org.apache.logging.log4j.core.config.ConfigurationException: Arguments given for element MongoDb3 are invalid: field 'databaseName' has invalid value 'null'
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.injectFields(PluginBuilder.java:209)
at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
Per the documentation , it makes is sound is optional and not required.
By looking at the log4j2 code, it seems the argument is tagged with @Required Annotation
org.apache.logging.log4j.mongodb3.MongoDbProvider
@PluginBuilderAttribute
@Required(message = "No database name provided")
private String databaseName;