Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
Source Code for Apache Log4j NoSQL Appenders
Apache Log4j NoSQL Appenders allows applications to send events to NoSQL repositories. To use it, you need both the log4j-nosql as well as the appropriate driver for your NoSQL database type.
Bytecode (Java 8) for Apache Log4j NoSQL Appenders is provided in a separate JAR file like log4j-nosql-2.3.jar.
Source Code files for Apache Log4j NoSQL Appenders are provided in both binary packge like apache-log4j-2.3-bin.zip and source package like apache-log4j-2.3-src.zip. You can download them at Apache Log4j Website.
You can also browse Source Code files for Apache Log4j NoSQL Appenders 2.3 below.
✍: FYIcenter.com
⏎ org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache license, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the license for the specific language governing permissions and * limitations under the license. */ package org.apache.logging.log4j.nosql.appender.mongodb; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.List; import com.mongodb.DB; import com.mongodb.MongoClient; import com.mongodb.ServerAddress; import com.mongodb.WriteConcern; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.appender.AbstractAppender; import org.apache.logging.log4j.core.config.plugins.Plugin; import org.apache.logging.log4j.core.config.plugins.PluginAttribute; import org.apache.logging.log4j.core.config.plugins.PluginFactory; import org.apache.logging.log4j.core.util.Loader; import org.apache.logging.log4j.core.util.NameUtil; import org.apache.logging.log4j.nosql.appender.NoSqlProvider; import org.apache.logging.log4j.status.StatusLogger; /** * The MongoDB implementation of {@link NoSqlProvider}. */ @Plugin(name = "MongoDb", category = "Core", printObject = true) public final class MongoDbProvider implements NoSqlProvider<MongoDbConnection> { private static final Logger LOGGER = StatusLogger.getLogger(); private final String collectionName; private final DB database; private final String description; private final WriteConcern writeConcern; private MongoDbProvider(final DB database, final WriteConcern writeConcern, final String collectionName, final String description) { this.database = database; this.writeConcern = writeConcern; this.collectionName = collectionName; this.description = "mongoDb{ " + description + " }"; } @Override public MongoDbConnection getConnection() { return new MongoDbConnection(this.database, this.writeConcern, this.collectionName); } @Override public String toString() { return this.description; } /** * Factory method for creating a MongoDB provider within the plugin manager. * * @param collectionName The name of the MongoDB collection to which log events should be written. * @param writeConcernConstant The {@link WriteConcern} constant to control writing details, defaults to * {@link WriteConcern#ACKNOWLEDGED}. * @param writeConcernConstantClassName The name of a class containing the aforementioned static WriteConcern * constant. Defaults to {@link WriteConcern}. * @param databaseName The name of the MongoDB database containing the collection to which log events should be * written. Mutually exclusive with {@code factoryClassName&factoryMethodName!=null}. * @param server The host name of the MongoDB server, defaults to localhost and mutually exclusive with * {@code factoryClassName&factoryMethodName!=null}. * @param port The port the MongoDB server is listening on, defaults to the default MongoDB port and mutually * exclusive with {@code factoryClassName&factoryMethodName!=null}. * @param username The username to authenticate against the MongoDB server with. * @param password The password to authenticate against the MongoDB server with. * @param factoryClassName A fully qualified class name containing a static factory method capable of returning a * {@link DB} or a {@link MongoClient}. * @param factoryMethodName The name of the public static factory method belonging to the aforementioned factory * class. * @return a new MongoDB provider. */ @PluginFactory public static MongoDbProvider createNoSqlProvider( @PluginAttribute("collectionName") final String collectionName, @PluginAttribute("writeConcernConstant") final String writeConcernConstant, @PluginAttribute("writeConcernConstantClass") final String writeConcernConstantClassName, @PluginAttribute("databaseName") final String databaseName, @PluginAttribute("server") final String server, @PluginAttribute("port") final String port, @PluginAttribute("username") final String username, @PluginAttribute(value = "password", sensitive = true) final String password, @PluginAttribute("factoryClassName") final String factoryClassName, @PluginAttribute("factoryMethodName") final String factoryMethodName) { DB database; String description; if (factoryClassName != null && factoryClassName.length() > 0 && factoryMethodName != null && factoryMethodName.length() > 0) { try { final Class<?> factoryClass = Loader.loadClass(factoryClassName); final Method method = factoryClass.getMethod(factoryMethodName); final Object object = method.invoke(null); if (object instanceof DB) { database = (DB) object; } else if (object instanceof MongoClient) { if (databaseName != null && databaseName.length() > 0) { database = ((MongoClient) object).getDB(databaseName); } else { LOGGER.error("The factory method [{}.{}()] returned a MongoClient so the database name is " + "required.", factoryClassName, factoryMethodName); return null; } } else if (object == null) { LOGGER.error("The factory method [{}.{}()] returned null.", factoryClassName, factoryMethodName); return null; } else { LOGGER.error("The factory method [{}.{}()] returned an unsupported type [{}].", factoryClassName, factoryMethodName, object.getClass().getName()); return null; } description = "database=" + database.getName(); final List<ServerAddress> addresses = database.getMongo().getAllAddress(); if (addresses.size() == 1) { description += ", server=" + addresses.get(0).getHost() + ", port=" + addresses.get(0).getPort(); } else { description += ", servers=["; for (final ServerAddress address : addresses) { description += " { " + address.getHost() + ", " + address.getPort() + " } "; } description += "]"; } } catch (final ClassNotFoundException e) { LOGGER.error("The factory class [{}] could not be loaded.", factoryClassName, e); return null; } catch (final NoSuchMethodException e) { LOGGER.error("The factory class [{}] does not have a no-arg method named [{}].", factoryClassName, factoryMethodName, e); return null; } catch (final Exception e) { LOGGER.error("The factory method [{}.{}()] could not be invoked.", factoryClassName, factoryMethodName, e); return null; } } else if (databaseName != null && databaseName.length() > 0) { description = "database=" + databaseName; try { if (server != null && server.length() > 0) { final int portInt = AbstractAppender.parseInt(port, 0); description += ", server=" + server; if (portInt > 0) { description += ", port=" + portInt; database = new MongoClient(server, portInt).getDB(databaseName); } else { database = new MongoClient(server).getDB(databaseName); } } else { database = new MongoClient().getDB(databaseName); } } catch (final Exception e) { LOGGER.error("Failed to obtain a database instance from the MongoClient at server [{}] and " + "port [{}].", server, port); return null; } } else { LOGGER.error("No factory method was provided so the database name is required."); return null; } if (!database.isAuthenticated()) { if (username != null && username.length() > 0 && password != null && password.length() > 0) { description += ", username=" + username + ", passwordHash=" + NameUtil.md5(password + MongoDbProvider.class.getName()); MongoDbConnection.authenticate(database, username, password); } else { LOGGER.error("The database is not already authenticated so you must supply a username and password " + "for the MongoDB provider."); return null; } } WriteConcern writeConcern; if (writeConcernConstant != null && writeConcernConstant.length() > 0) { if (writeConcernConstantClassName != null && writeConcernConstantClassName.length() > 0) { try { final Class<?> writeConcernConstantClass = Loader.loadClass(writeConcernConstantClassName); final Field field = writeConcernConstantClass.getField(writeConcernConstant); writeConcern = (WriteConcern) field.get(null); } catch (final Exception e) { LOGGER.error("Write concern constant [{}.{}] not found, using default.", writeConcernConstantClassName, writeConcernConstant); writeConcern = WriteConcern.ACKNOWLEDGED; } } else { writeConcern = WriteConcern.valueOf(writeConcernConstant); if (writeConcern == null) { LOGGER.warn("Write concern constant [{}] not found, using default.", writeConcernConstant); writeConcern = WriteConcern.ACKNOWLEDGED; } } } else { writeConcern = WriteConcern.ACKNOWLEDGED; } return new MongoDbProvider(database, writeConcern, collectionName, description); } }
⏎ org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java
Or download all of them as a single archive file:
File name: log4j-jmx-nosql-2.3-sources.jar File size: 23448 bytes Release date: 2020-07-03 Download
⇒ Downloading Apache Log4j 2.4.1 Package
⇐ Source Code for Apache Log4j JMX GUI
2015-11-04, 10720👍, 0💬
Popular Posts:
pache Derby is an open source relational database implemented entirely in Java and available under t...
JDK 17 jdk.hotspot.agent.jmod is the JMOD file for JDK 17 Hotspot Agent module. JDK 17 Hotspot Agent...
What Is poi-3.5.jar - Part 2? poi-3.5.jar is one of the JAR files for Apache POI 3.5, which provides...
JDK 17 jdk.hotspot.agent.jmod is the JMOD file for JDK 17 Hotspot Agent module. JDK 17 Hotspot Agent...
JDK 11 java.management.jmod is the JMOD file for JDK 11 Management module. JDK 11 Management module ...