http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlObject.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlObject.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlObject.java deleted file mode 100644 index 191d1a8..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlObject.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * 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; - -/** - * Represents a simple POJO object inserted into a NoSQL object. - * - * @param <W> Specifies what type of underlying object (such as a MongoDB BasicDBObject) this NoSqlObject wraps. - */ -public interface NoSqlObject<W> { - /** - * Sets the value of a property on this object to a String or primitive. - * - * @param field The name of the property - * @param value The value of the property - */ - void set(String field, Object value); - - /** - * Sets the value of a property on this object to a nested complex object. - * - * @param field The name of the property - * @param value The value of the property - */ - void set(String field, NoSqlObject<W> value); - - /** - * Sets the value of a property on this object to an array of Strings or primitives. - * - * @param field The name of the property - * @param values The values for the property - */ - void set(String field, Object[] values); - - /** - * Sets the value of a property on this object to an array of nested complex objects. - * - * @param field The name of the property - * @param values The values for the property - */ - void set(String field, NoSqlObject<W>[] values); - - /** - * Obtains the underlying NoSQL library-specific object that this object wraps. - * - * @return the wrapped object. - */ - W unwrap(); -}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlProvider.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlProvider.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlProvider.java deleted file mode 100644 index 75692bd..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSqlProvider.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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; - -/** - * Implementations of this class are plugins for configuring the {@link NoSqlAppender} with the proper provider - * (MongoDB, etc.). - * - * @param <C> Specifies which implementation of {@link NoSqlConnection} this provider provides. - */ -public interface NoSqlProvider<C extends NoSqlConnection<?, ? extends NoSqlObject<?>>> { - - /** - * Obtains a connection from this provider. The concept of a connection in this case is not strictly an active - * duplex UDP or TCP connection to the underlying database. It can be thought of more as a gateway, a path for - * inserting objects that may use a persistent connection or may use HTTP web service calls, etc. - * <p> - * Where applicable, this method should return a connection from the connection pool as opposed to opening a - * brand new connection every time. - * </p> - * - * @return a connection that can be used to create and persist objects to this database. - * @see NoSqlConnection - */ - C getConnection(); - - /** - * All implementations must override {@link Object#toString()} to provide information about the provider - * configuration (obscuring passwords with one-way hashes). - * - * @return the string representation of this NoSQL provider. - */ - @Override - String toString(); -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java deleted file mode 100644 index 2494a5c..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbConnection.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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.couchdb; - -import java.util.Map; - -import org.apache.logging.log4j.core.appender.AppenderLoggingException; -import org.apache.logging.log4j.nosql.appender.AbstractNoSqlConnection; -import org.apache.logging.log4j.nosql.appender.DefaultNoSqlObject; -import org.apache.logging.log4j.nosql.appender.NoSqlConnection; -import org.apache.logging.log4j.nosql.appender.NoSqlObject; -import org.apache.logging.log4j.util.Strings; -import org.lightcouch.CouchDbClient; -import org.lightcouch.Response; - -/** - * The Apache CouchDB implementation of {@link NoSqlConnection}. - */ -public final class CouchDbConnection extends AbstractNoSqlConnection<Map<String, Object>, DefaultNoSqlObject> { - private final CouchDbClient client; - - public CouchDbConnection(final CouchDbClient client) { - this.client = client; - } - - @Override - public DefaultNoSqlObject createObject() { - return new DefaultNoSqlObject(); - } - - @Override - public DefaultNoSqlObject[] createList(final int length) { - return new DefaultNoSqlObject[length]; - } - - @Override - public void insertObject(final NoSqlObject<Map<String, Object>> object) { - try { - final Response response = this.client.save(object.unwrap()); - if (Strings.isNotEmpty(response.getError())) { - throw new AppenderLoggingException( - "Failed to write log event to CouchDB due to error: " + response.getError() + '.'); - } - } catch (final Exception e) { - throw new AppenderLoggingException("Failed to write log event to CouchDB due to error: " + e.getMessage(), - e); - } - } - - @Override - protected void closeImpl() { - this.client.shutdown(); - } - -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java deleted file mode 100644 index cafe644..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/CouchDbProvider.java +++ /dev/null @@ -1,161 +0,0 @@ -/* - * 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.couchdb; - -import java.lang.reflect.Method; - -import org.apache.logging.log4j.Logger; -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.config.plugins.convert.TypeConverters; -import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidHost; -import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidPort; -import org.apache.logging.log4j.core.util.NameUtil; -import org.apache.logging.log4j.nosql.appender.NoSqlProvider; -import org.apache.logging.log4j.status.StatusLogger; -import org.apache.logging.log4j.util.LoaderUtil; -import org.apache.logging.log4j.util.Strings; -import org.lightcouch.CouchDbClient; -import org.lightcouch.CouchDbProperties; - -/** - * The Apache CouchDB implementation of {@link NoSqlProvider}. - */ -@Plugin(name = "CouchDB", category = "Core", printObject = true) -public final class CouchDbProvider implements NoSqlProvider<CouchDbConnection> { - private static final int HTTP = 80; - private static final int HTTPS = 443; - private static final Logger LOGGER = StatusLogger.getLogger(); - - private final CouchDbClient client; - private final String description; - - private CouchDbProvider(final CouchDbClient client, final String description) { - this.client = client; - this.description = "couchDb{ " + description + " }"; - } - - @Override - public CouchDbConnection getConnection() { - return new CouchDbConnection(this.client); - } - - @Override - public String toString() { - return this.description; - } - - /** - * Factory method for creating an Apache CouchDB provider within the plugin manager. - * - * @param databaseName The name of the database to which log event documents will be written. - * @param protocol Either "http" or "https," defaults to "http" and mutually exclusive with - * {@code factoryClassName&factoryMethodName!=null}. - * @param server The host name of the CouchDB server, defaults to localhost and mutually exclusive with - * {@code factoryClassName&factoryMethodName!=null}. - * @param port The port that CouchDB is listening on, defaults to 80 if {@code protocol} is "http" and 443 if - * {@code protocol} is "https," and mutually exclusive with - * {@code factoryClassName&factoryMethodName!=null}. - * @param username The username to authenticate against the MongoDB server with, mutually exclusive with - * {@code factoryClassName&factoryMethodName!=null}. - * @param password The password to authenticate against the MongoDB server with, mutually exclusive with - * {@code factoryClassName&factoryMethodName!=null}. - * @param factoryClassName A fully qualified class name containing a static factory method capable of returning a - * {@link CouchDbClient} or {@link CouchDbProperties}. - * @param factoryMethodName The name of the public static factory method belonging to the aforementioned factory - * class. - * @return a new Apache CouchDB provider. - */ - @PluginFactory - public static CouchDbProvider createNoSqlProvider( - @PluginAttribute("databaseName") final String databaseName, - @PluginAttribute("protocol") String protocol, - @PluginAttribute(value = "server", defaultString = "localhost") @ValidHost final String server, - @PluginAttribute(value = "port", defaultString = "0") @ValidPort 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) { - CouchDbClient client; - String description; - if (Strings.isNotEmpty(factoryClassName) && Strings.isNotEmpty(factoryMethodName)) { - try { - final Class<?> factoryClass = LoaderUtil.loadClass(factoryClassName); - final Method method = factoryClass.getMethod(factoryMethodName); - final Object object = method.invoke(null); - - if (object instanceof CouchDbClient) { - client = (CouchDbClient) object; - description = "uri=" + client.getDBUri(); - } else if (object instanceof CouchDbProperties) { - final CouchDbProperties properties = (CouchDbProperties) object; - client = new CouchDbClient(properties); - description = "uri=" + client.getDBUri() + ", username=" + properties.getUsername() - + ", passwordHash=" + NameUtil.md5(password + CouchDbProvider.class.getName()) - + ", maxConnections=" + properties.getMaxConnections() + ", connectionTimeout=" - + properties.getConnectionTimeout() + ", socketTimeout=" + properties.getSocketTimeout(); - } 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; - } - } 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 (Strings.isNotEmpty(databaseName)) { - if (protocol != null && protocol.length() > 0) { - protocol = protocol.toLowerCase(); - if (!protocol.equals("http") && !protocol.equals("https")) { - LOGGER.error("Only protocols [http] and [https] are supported, [{}] specified.", protocol); - return null; - } - } else { - protocol = "http"; - LOGGER.warn("No protocol specified, using default port [http]."); - } - - final int portInt = TypeConverters.convert(port, int.class, protocol.equals("https") ? HTTPS : HTTP); - - if (Strings.isEmpty(username) || Strings.isEmpty(password)) { - LOGGER.error("You must provide a username and password for the CouchDB provider."); - return null; - } - - client = new CouchDbClient(databaseName, false, protocol, server, portInt, username, password); - description = "uri=" + client.getDBUri() + ", username=" + username + ", passwordHash=" - + NameUtil.md5(password + CouchDbProvider.class.getName()); - } else { - LOGGER.error("No factory method was provided so the database name is required."); - return null; - } - - return new CouchDbProvider(client, description); - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/package-info.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/package-info.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/package-info.java deleted file mode 100644 index b783f87..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/couchdb/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ -/** - * The classes in this package contain the Apache CouchDB provider for the NoSQL Appender. - */ -package org.apache.logging.log4j.nosql.appender.couchdb; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java deleted file mode 100644 index 0edbb66..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbConnection.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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 org.apache.logging.log4j.Level; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.appender.AppenderLoggingException; -import org.apache.logging.log4j.nosql.appender.AbstractNoSqlConnection; -import org.apache.logging.log4j.nosql.appender.NoSqlConnection; -import org.apache.logging.log4j.nosql.appender.NoSqlObject; -import org.apache.logging.log4j.status.StatusLogger; -import org.bson.BSON; -import org.bson.Transformer; - -import com.mongodb.BasicDBObject; -import com.mongodb.DB; -import com.mongodb.DBCollection; -import com.mongodb.MongoException; -import com.mongodb.WriteConcern; - -/** - * The MongoDB implementation of {@link NoSqlConnection}. - */ -public final class MongoDbConnection extends AbstractNoSqlConnection<BasicDBObject, MongoDbObject> { - - private static final Logger LOGGER = StatusLogger.getLogger(); - - static { - BSON.addEncodingHook(Level.class, new Transformer() { - @Override - public Object transform(final Object o) { - if (o instanceof Level) { - return ((Level) o).name(); - } - return o; - } - }); - } - - private final DBCollection collection; - private final WriteConcern writeConcern; - - public MongoDbConnection(final DB database, final WriteConcern writeConcern, final String collectionName, - final Boolean isCapped, final Integer collectionSize) { - if (database.collectionExists(collectionName)) { - collection = database.getCollection(collectionName); - } else { - final BasicDBObject options = new BasicDBObject(); - options.put("capped", isCapped); - options.put("size", collectionSize); - this.collection = database.createCollection(collectionName, options); - } - this.writeConcern = writeConcern; - } - - @Override - public MongoDbObject createObject() { - return new MongoDbObject(); - } - - @Override - public MongoDbObject[] createList(final int length) { - return new MongoDbObject[length]; - } - - @Override - public void insertObject(final NoSqlObject<BasicDBObject> object) { - try { - this.collection.insert(object.unwrap(), this.writeConcern); - } catch (final MongoException e) { - throw new AppenderLoggingException("Failed to write log event to MongoDB due to error: " + e.getMessage(), - e); - } - } - - @Override - public void closeImpl() { - // LOG4J2-1196 - this.collection.getDB().getMongo().close(); - } - -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbObject.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbObject.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbObject.java deleted file mode 100644 index 9c39cc3..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbObject.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * 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.util.Collections; - -import org.apache.logging.log4j.nosql.appender.NoSqlObject; - -import com.mongodb.BasicDBList; -import com.mongodb.BasicDBObject; - -/** - * The MongoDB implementation of {@link NoSqlObject}. - */ -public final class MongoDbObject implements NoSqlObject<BasicDBObject> { - private final BasicDBObject mongoObject; - - public MongoDbObject() { - this.mongoObject = new BasicDBObject(); - } - - @Override - public void set(final String field, final Object value) { - this.mongoObject.append(field, value); - } - - @Override - public void set(final String field, final NoSqlObject<BasicDBObject> value) { - this.mongoObject.append(field, value.unwrap()); - } - - @Override - public void set(final String field, final Object[] values) { - final BasicDBList list = new BasicDBList(); - Collections.addAll(list, values); - this.mongoObject.append(field, list); - } - - @Override - public void set(final String field, final NoSqlObject<BasicDBObject>[] values) { - final BasicDBList list = new BasicDBList(); - for (final NoSqlObject<BasicDBObject> value : values) { - list.add(value.unwrap()); - } - this.mongoObject.append(field, list); - } - - @Override - public BasicDBObject unwrap() { - return this.mongoObject; - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java deleted file mode 100644 index 69a1f00..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/MongoDbProvider.java +++ /dev/null @@ -1,351 +0,0 @@ -/* - * 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.ArrayList; -import java.util.List; - -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.Core; -import org.apache.logging.log4j.core.config.plugins.Plugin; -import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute; -import org.apache.logging.log4j.core.config.plugins.PluginBuilderFactory; -import org.apache.logging.log4j.core.config.plugins.PluginFactory; -import org.apache.logging.log4j.core.config.plugins.convert.TypeConverters; -import org.apache.logging.log4j.core.config.plugins.validation.constraints.Required; -import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidHost; -import org.apache.logging.log4j.core.config.plugins.validation.constraints.ValidPort; -import org.apache.logging.log4j.core.filter.AbstractFilterable; -import org.apache.logging.log4j.core.util.NameUtil; -import org.apache.logging.log4j.nosql.appender.NoSqlProvider; -import org.apache.logging.log4j.status.StatusLogger; -import org.apache.logging.log4j.util.LoaderUtil; -import org.apache.logging.log4j.util.Strings; - -import com.mongodb.DB; -import com.mongodb.MongoClient; -import com.mongodb.MongoCredential; -import com.mongodb.ServerAddress; -import com.mongodb.WriteConcern; - -/** - * The MongoDB implementation of {@link NoSqlProvider}. - */ -@Plugin(name = "MongoDb", category = Core.CATEGORY_NAME, printObject = true) -public final class MongoDbProvider implements NoSqlProvider<MongoDbConnection> { - - private static final WriteConcern DEFAULT_WRITE_CONCERN = WriteConcern.ACKNOWLEDGED; - private static final Logger LOGGER = StatusLogger.getLogger(); - private static final int DEFAULT_PORT = 27017; - private static final int DEFAULT_COLLECTION_SIZE = 536870912; - - private final String collectionName; - private final DB database; - private final String description; - private final WriteConcern writeConcern; - private final boolean isCapped; - private final Integer collectionSize; - - private MongoDbProvider(final DB database, final WriteConcern writeConcern, final String collectionName, - final boolean isCapped, final Integer collectionSize, final String description) { - this.database = database; - this.writeConcern = writeConcern; - this.collectionName = collectionName; - this.isCapped = isCapped; - this.collectionSize = collectionSize; - this.description = "mongoDb{ " + description + " }"; - } - - @Override - public MongoDbConnection getConnection() { - return new MongoDbConnection(this.database, this.writeConcern, this.collectionName, this.isCapped, this.collectionSize); - } - - @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. - * @deprecated in 2.8; use {@link #newBuilder()} instead. - */ - @PluginFactory - public static MongoDbProvider createNoSqlProvider( - final String collectionName, - final String writeConcernConstant, - final String writeConcernConstantClassName, - final String databaseName, - final String server, - final String port, - final String userName, - final String password, - final String factoryClassName, - final String factoryMethodName) { - LOGGER.info("createNoSqlProvider"); - return newBuilder().setCollectionName(collectionName).setWriteConcernConstant(writeConcernConstantClassName) - .setWriteConcernConstant(writeConcernConstant).setDatabaseName(databaseName).setServer(server) - .setPort(port).setUserName(userName).setPassword(password).setFactoryClassName(factoryClassName) - .setFactoryMethodName(factoryMethodName).build(); - } - - @PluginBuilderFactory - public static <B extends Builder<B>> B newBuilder() { - return new Builder<B>().asBuilder(); - } - - public static class Builder<B extends Builder<B>> extends AbstractFilterable.Builder<B> - implements org.apache.logging.log4j.core.util.Builder<MongoDbProvider> { - - @PluginBuilderAttribute - @ValidHost - private String server = "localhost"; - - @PluginBuilderAttribute - @ValidPort - private String port = "" + DEFAULT_PORT; - - @PluginBuilderAttribute - @Required(message = "No database name provided") - private String databaseName; - - @PluginBuilderAttribute - @Required(message = "No collection name provided") - private String collectionName; - - @PluginBuilderAttribute - private String userName; - - @PluginBuilderAttribute(sensitive = true) - private String password; - - @PluginBuilderAttribute("capped") - private boolean isCapped = false; - - @PluginBuilderAttribute - private int collectionSize = DEFAULT_COLLECTION_SIZE; - - @PluginBuilderAttribute - private String factoryClassName; - - @PluginBuilderAttribute - private String factoryMethodName; - - @PluginBuilderAttribute - private String writeConcernConstantClassName; - - @PluginBuilderAttribute - private String writeConcernConstant; - - public B setServer(final String server) { - this.server = server; - return asBuilder(); - } - - public B setPort(final String port) { - this.port = port; - return asBuilder(); - } - - public B setDatabaseName(final String databaseName) { - this.databaseName = databaseName; - return asBuilder(); - } - - public B setCollectionName(final String collectionName) { - this.collectionName = collectionName; - return asBuilder(); - } - - public B setUserName(final String userName) { - this.userName = userName; - return asBuilder(); - } - - public B setPassword(final String password) { - this.password = password; - return asBuilder(); - } - - public B setCapped(final boolean isCapped) { - this.isCapped = isCapped; - return asBuilder(); - } - - public B setCollectionSize(final int collectionSize) { - this.collectionSize = collectionSize; - return asBuilder(); - } - - public B setFactoryClassName(final String factoryClassName) { - this.factoryClassName = factoryClassName; - return asBuilder(); - } - - public B setFactoryMethodName(final String factoryMethodName) { - this.factoryMethodName = factoryMethodName; - return asBuilder(); - } - - public B setWriteConcernConstantClassName(final String writeConcernConstantClassName) { - this.writeConcernConstantClassName = writeConcernConstantClassName; - return asBuilder(); - } - - public B setWriteConcernConstant(final String writeConcernConstant) { - this.writeConcernConstant = writeConcernConstant; - return asBuilder(); - } - - @Override - public MongoDbProvider build() { - DB database; - String description; - if (Strings.isNotEmpty(factoryClassName) && Strings.isNotEmpty(factoryMethodName)) { - try { - final Class<?> factoryClass = LoaderUtil.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 (Strings.isNotEmpty(databaseName)) { - 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 (Strings.isNotEmpty(databaseName)) { - final List<MongoCredential> credentials = new ArrayList<>(); - description = "database=" + databaseName; - if (Strings.isNotEmpty(userName) && Strings.isNotEmpty(password)) { - description += ", username=" + userName + ", passwordHash=" - + NameUtil.md5(password + MongoDbProvider.class.getName()); - credentials.add(MongoCredential.createCredential(userName, databaseName, password.toCharArray())); - } - try { - final int portInt = TypeConverters.convert(port, int.class, DEFAULT_PORT); - description += ", server=" + server + ", port=" + portInt; - database = new MongoClient(new ServerAddress(server, portInt), credentials).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; - } - - try { - database.getCollectionNames(); // Check if the database actually requires authentication - } catch (final Exception e) { - LOGGER.error( - "The database is not up, or you are not authenticated, try supplying a username and password to the MongoDB provider.", - e); - return null; - } - - final WriteConcern writeConcern = toWriteConcern(writeConcernConstant, writeConcernConstantClassName); - - return new MongoDbProvider(database, writeConcern, collectionName, isCapped, collectionSize, description); - } - - private static WriteConcern toWriteConcern(final String writeConcernConstant, - final String writeConcernConstantClassName) { - WriteConcern writeConcern; - if (Strings.isNotEmpty(writeConcernConstant)) { - if (Strings.isNotEmpty(writeConcernConstantClassName)) { - try { - final Class<?> writeConcernConstantClass = LoaderUtil.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 = DEFAULT_WRITE_CONCERN; - } - } else { - writeConcern = WriteConcern.valueOf(writeConcernConstant); - if (writeConcern == null) { - LOGGER.warn("Write concern constant [{}] not found, using default.", writeConcernConstant); - writeConcern = DEFAULT_WRITE_CONCERN; - } - } - } else { - writeConcern = DEFAULT_WRITE_CONCERN; - } - return writeConcern; - } - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/package-info.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/package-info.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/package-info.java deleted file mode 100644 index 54a2878..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/mongodb/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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. - */ -/** - * The classes in this package contain the MongoDB provider for the NoSQL Appender. - */ -package org.apache.logging.log4j.nosql.appender.mongodb; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/package-info.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/package-info.java b/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/package-info.java deleted file mode 100644 index 9560e9d..0000000 --- a/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/package-info.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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. - */ -/** - * The NoSQL Appender supports writing log events to NoSQL databases. The following NoSQL databases are currently - * supported. You can also easily extend this to support other NoSQL databases by implementing just three interfaces: - * {@link org.apache.logging.log4j.nosql.appender.NoSqlObject NoSqlObject}, - * {@link org.apache.logging.log4j.nosql.appender.NoSqlConnection NoSqlConnection}, and - * {@link org.apache.logging.log4j.nosql.appender.NoSqlProvider NoSqlProvider}. You will need the client library for your - * NoSQL database of choice on the classpath to use this appender; these Maven dependencies are optional and will not - * automatically be added to your classpath.<br> - * <br> - * <ul> - * <li><a href="http://www.mongodb.org/" target="_blank">MongoDB</a>: org.mongodb:mongo-java-driver:3.0.4 or newer - * must be on the classpath.</li> - * <li><a href="http://couchdb.apache.org/" target="_blank">Apache CouchDB</a>: org.lightcouch:lightcouch:0.0.6 or - * newer must be on the classpath.</li> - * </ul> - */ -package org.apache.logging.log4j.nosql.appender; - http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/site/markdown/index.md.vm ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/site/markdown/index.md.vm b/log4j-nosql/src/site/markdown/index.md.vm deleted file mode 100644 index 48c80c4..0000000 --- a/log4j-nosql/src/site/markdown/index.md.vm +++ /dev/null @@ -1,77 +0,0 @@ -<!-- vim: set syn=markdown : --> -<!-- - 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. ---> -#set($h1='#') -#set($h2='##') -## TODO: use properties for dynamic dependency versions - -$h1 NoSQL Appenders - -The NoSQL Appenders allow 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. - -$h2 CouchDB - -[Apache CouchDB](https://couchdb.apache.org/) is supported through the -[LightCouch](http://www.lightcouch.org/) driver. - -``` - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.lightcouch</groupId> - <artifactId>lightcouch</artifactId> - <version>0.0.6</version> - </dependency> - </dependencies> - </dependencyManagement> - <dependencies> - <dependency> - <groupId>org.lightcouch</groupId> - <artifactId>lightcouch</artifactId> - </dependency> - </dependencies> -``` - -$h2 MongoDB - -[MongoDB](http://www.mongodb.org/) is supported through the -[Java MongoDB Driver](http://docs.mongodb.org/ecosystem/drivers/java/). - -``` - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.mongodb</groupId> - <artifactId>mongo-java-driver</artifactId> - <version>2.12.3</version> - </dependency> - </dependencies> - </dependencyManagement> - <dependencies> - <dependency> - <groupId>org.mongodb</groupId> - <artifactId>mongo-java-driver</artifactId> - </dependency> - </dependencies> -``` - -$h2 Requirements - -The NoSQL Appenders is dependent on the Log4j 2 API and implementation. -For more information, see [Runtime Dependencies](../runtime-dependencies.html). http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/site/site.xml ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/site/site.xml b/log4j-nosql/src/site/site.xml deleted file mode 100644 index bc6efc3..0000000 --- a/log4j-nosql/src/site/site.xml +++ /dev/null @@ -1,52 +0,0 @@ -<!-- - 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. - ---> -<project name="Log4j NoSQL Appenders" - xmlns="http://maven.apache.org/DECORATION/1.4.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/DECORATION/1.4.0 http://maven.apache.org/xsd/decoration-1.4.0.xsd"> - <body> - <links> - <item name="Apache" href="http://www.apache.org/" /> - <item name="Logging Services" href="http://logging.apache.org/"/> - <item name="Log4j" href="../index.html"/> - </links> - - <!-- Component-specific reports --> - <menu ref="reports"/> - - <!-- Overall Project Info --> - <menu name="Log4j Project Information" img="icon-info-sign"> - <item name="Dependencies" href="../dependencies.html" /> - <item name="Dependency Convergence" href="../dependency-convergence.html" /> - <item name="Dependency Management" href="../dependency-management.html" /> - <item name="Project Team" href="../team-list.html" /> - <item name="Mailing Lists" href="../mail-lists.html" /> - <item name="Issue Tracking" href="../issue-tracking.html" /> - <item name="Project License" href="../license.html" /> - <item name="Source Repository" href="../source-repository.html" /> - <item name="Project Summary" href="../project-summary.html" /> - </menu> - - <menu name="Log4j Project Reports" img="icon-cog"> - <item name="Changes Report" href="../changes-report.html" /> - <item name="JIRA Report" href="../jira-report.html" /> - <item name="Surefire Report" href="../surefire-report.html" /> - <item name="RAT Report" href="../rat-report.html" /> - </menu> - </body> -</project> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbAuthTest.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbAuthTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbAuthTest.java deleted file mode 100644 index f87d91d..0000000 --- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbAuthTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.categories.Appenders; -import org.apache.logging.log4j.junit.LoggerContextRule; -import org.junit.ClassRule; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.experimental.categories.Category; - -@Ignore("Requires a running MongoDB server") -@Category(Appenders.MongoDb.class) -public class MongoDbAuthTest { - - @ClassRule - public static LoggerContextRule context = new LoggerContextRule("log4j2-mongodb-auth.xml"); - - @Test - public void test() { - final Logger logger = LogManager.getLogger(); - logger.info("Hello log"); - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbCappedTest.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbCappedTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbCappedTest.java deleted file mode 100644 index a622716..0000000 --- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbCappedTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.categories.Appenders; -import org.apache.logging.log4j.junit.LoggerContextRule; -import org.junit.ClassRule; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.experimental.categories.Category; - -@Ignore("Requires a running MongoDB server") -@Category(Appenders.MongoDb.class) -public class MongoDbCappedTest { - - @ClassRule - public static LoggerContextRule context = new LoggerContextRule("log4j2-mongodb-capped.xml"); - - @Test - public void test() { - final Logger logger = LogManager.getLogger(); - logger.info("Hello log"); - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbTest.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbTest.java deleted file mode 100644 index b480798..0000000 --- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/MongoDbTest.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.categories.Appenders; -import org.apache.logging.log4j.junit.LoggerContextRule; -import org.junit.ClassRule; -import org.junit.Ignore; -import org.junit.Test; -import org.junit.experimental.categories.Category; - -@Ignore("Requires a running MongoDB server") -@Category(Appenders.MongoDb.class) -public class MongoDbTest { - - @ClassRule - public static LoggerContextRule context = new LoggerContextRule("log4j2-mongodb.xml"); - - @Test - public void test() { - final Logger logger = LogManager.getLogger(); - logger.info("Hello log"); - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java deleted file mode 100644 index 236218c..0000000 --- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlAppenderTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; - -import static org.junit.Assert.*; - -@RunWith(MockitoJUnitRunner.class) -public class NoSqlAppenderTest { - - @Mock - private NoSqlProvider<?> provider; - - @Test - public void testNoProvider() { - final NoSqlAppender appender = NoSqlAppender.createAppender("myName01", null, null, null, null); - - assertNull("The appender should be null.", appender); - } - - @Test - public void testProvider() { - final NoSqlAppender appender = NoSqlAppender.createAppender("myName01", null, null, null, provider); - - assertNotNull("The appender should not be null.", appender); - assertEquals("The toString value is not correct.", - "myName01{ manager=noSqlManager{ description=myName01, bufferSize=0, provider=" + provider + " } }", - appender.toString()); - - appender.stop(); - } - - @Test - public void testProviderBuffer() { - final NoSqlAppender appender = NoSqlAppender.createAppender("anotherName02", null, null, "25", provider); - - assertNotNull("The appender should not be null.", appender); - assertEquals("The toString value is not correct.", - "anotherName02{ manager=noSqlManager{ description=anotherName02, bufferSize=25, provider=" + provider - + " } }", appender.toString()); - - appender.stop(); - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java b/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java deleted file mode 100644 index af55e2c..0000000 --- a/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSqlDatabaseManagerTest.java +++ /dev/null @@ -1,427 +0,0 @@ -/* - * 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; - -import java.io.IOException; -import java.sql.SQLException; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.MarkerManager; -import org.apache.logging.log4j.ThreadContext; -import org.apache.logging.log4j.core.LogEvent; -import org.apache.logging.log4j.core.appender.AppenderLoggingException; -import org.apache.logging.log4j.core.impl.Log4jLogEvent; -import org.apache.logging.log4j.junit.ThreadContextStackRule; -import org.apache.logging.log4j.message.Message; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.runners.MockitoJUnitRunner; -import org.mockito.stubbing.Answer; - -import static org.junit.Assert.*; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; -import static org.mockito.Mockito.mock; - -@RunWith(MockitoJUnitRunner.class) -public class NoSqlDatabaseManagerTest { - @Mock - private NoSqlConnection<Map<String, Object>, DefaultNoSqlObject> connection; - @Mock - private NoSqlProvider<NoSqlConnection<Map<String, Object>, DefaultNoSqlObject>> provider; - @Mock - private Message message; - @Captor - private ArgumentCaptor<NoSqlObject<Map<String, Object>>> captor; - - @Rule - public final ThreadContextStackRule threadContextRule = new ThreadContextStackRule(); - @Rule - public final ExpectedException expectedException = ExpectedException.none(); - - @Before - public void setUp() { - given(provider.getConnection()).willReturn(connection); - given(connection.createObject()).willAnswer(new Answer<DefaultNoSqlObject>() { - @Override - public DefaultNoSqlObject answer(final InvocationOnMock invocation) throws Throwable { - return new DefaultNoSqlObject(); - } - }); - given(connection.createList(anyInt())).willAnswer(new Answer<DefaultNoSqlObject[]>() { - @Override - public DefaultNoSqlObject[] answer(final InvocationOnMock invocation) throws Throwable { - return new DefaultNoSqlObject[invocation.<Integer>getArgument(0)]; - } - }); - } - - @Test - public void testConnection() { - try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, - provider)) { - - assertNotNull("The manager should not be null.", manager); - - manager.connectAndStart(); - then(provider).should().getConnection(); - manager.commitAndClose(); - } - } - - @Test - public void testWriteInternalNotConnected01() { - try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, - provider)) { - expectedException.expect(AppenderLoggingException.class); - manager.writeInternal(mock(LogEvent.class)); - } - } - - @Test - public void testWriteInternalNotConnected02() { - given(connection.isClosed()).willReturn(true); - - try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, - provider)) { - - manager.startup(); - manager.connectAndStart(); - then(provider).should().getConnection(); - - expectedException.expect(AppenderLoggingException.class); - manager.writeInternal(mock(LogEvent.class)); - } - } - - @Test - public void testWriteInternal01() { - given(connection.isClosed()).willReturn(false); - given(message.getFormattedMessage()).willReturn("My formatted message 01."); - - try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, - provider)) { - - manager.startup(); - manager.connectAndStart(); - then(provider).should().getConnection(); - - final LogEvent event = Log4jLogEvent.newBuilder() - .setLevel(Level.WARN) - .setLoggerName("com.foo.NoSQLDbTest.testWriteInternal01") - .setMessage(message) - .setSource(new StackTraceElement("com.foo.Bar", "testMethod01", "Bar.java", 15)) - .setThreadId(1L) - .setThreadName("MyThread-A") - .setThreadPriority(1) - .setTimeMillis(1234567890123L) - .build(); - - manager.writeInternal(event); - then(connection).should().insertObject(captor.capture()); - - final NoSqlObject<Map<String, Object>> inserted = captor.getValue(); - assertNotNull("The inserted value should not be null.", inserted); - final Map<String, Object> object = inserted.unwrap(); - assertNotNull("The unwrapped object should not be null.", object); - - assertEquals("The level is not correct.", Level.WARN, object.get("level")); - assertEquals("The logger is not correct.", "com.foo.NoSQLDbTest.testWriteInternal01", - object.get("loggerName")); - assertEquals("The message is not correct.", "My formatted message 01.", object.get("message")); - assertEquals("The thread is not correct.", "MyThread-A", object.get("threadName")); - assertEquals("The millis is not correct.", 1234567890123L, object.get("millis")); - assertEquals("The date is not correct.", 1234567890123L, ((Date) object.get("date")).getTime()); - - assertTrue("The source should be a map.", object.get("source") instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> source = (Map<String, Object>) object.get("source"); - assertEquals("The class is not correct.", "com.foo.Bar", source.get("className")); - assertEquals("The method is not correct.", "testMethod01", source.get("methodName")); - assertEquals("The file name is not correct.", "Bar.java", source.get("fileName")); - assertEquals("The line number is not correct.", 15, source.get("lineNumber")); - - assertNull("The marker should be null.", object.get("marker")); - - assertNull("The thrown should be null.", object.get("thrown")); - - assertTrue("The context map should be empty.", ((Map) object.get("contextMap")).isEmpty()); - - assertTrue("The context stack should be null.", ((Collection) object.get("contextStack")).isEmpty()); - - } - } - - @Test - public void testWriteInternal02() { - given(connection.isClosed()).willReturn(false); - given(message.getFormattedMessage()).willReturn("Another cool message 02."); - - try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, - provider)) { - manager.startup(); - - manager.connectAndStart(); - then(provider).should().getConnection(); - - final RuntimeException exception = new RuntimeException("This is something cool!"); - final Map<String, String> context = new HashMap<>(); - context.put("hello", "world"); - context.put("user", "pass"); - - ThreadContext.push("message1"); - ThreadContext.push("stack2"); - final ThreadContext.ContextStack stack = ThreadContext.getImmutableStack(); - ThreadContext.clearStack(); - - final LogEvent event = Log4jLogEvent.newBuilder() - .setLevel(Level.DEBUG) - .setLoggerName("com.foo.NoSQLDbTest.testWriteInternal02") - .setMessage(message) - .setSource(new StackTraceElement("com.bar.Foo", "anotherMethod03", "Foo.java", 9)) - .setMarker(MarkerManager.getMarker("LoneMarker")) - .setThreadId(1L) - .setThreadName("AnotherThread-B") - .setThreadPriority(1) - .setTimeMillis(987654321564L) - .setThrown(exception) - .setContextMap(context) - .setContextStack(stack) - .build(); - - manager.writeInternal(event); - then(connection).should().insertObject(captor.capture()); - - final NoSqlObject<Map<String, Object>> inserted = captor.getValue(); - assertNotNull("The inserted value should not be null.", inserted); - final Map<String, Object> object = inserted.unwrap(); - assertNotNull("The unwrapped object should not be null.", object); - - assertEquals("The level is not correct.", Level.DEBUG, object.get("level")); - assertEquals("The logger is not correct.", "com.foo.NoSQLDbTest.testWriteInternal02", - object.get("loggerName")); - assertEquals("The message is not correct.", "Another cool message 02.", object.get("message")); - assertEquals("The thread is not correct.", "AnotherThread-B", object.get("threadName")); - assertEquals("The millis is not correct.", 987654321564L, object.get("millis")); - assertEquals("The date is not correct.", 987654321564L, ((Date) object.get("date")).getTime()); - - assertTrue("The source should be a map.", object.get("source") instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> source = (Map<String, Object>) object.get("source"); - assertEquals("The class is not correct.", "com.bar.Foo", source.get("className")); - assertEquals("The method is not correct.", "anotherMethod03", source.get("methodName")); - assertEquals("The file name is not correct.", "Foo.java", source.get("fileName")); - assertEquals("The line number is not correct.", 9, source.get("lineNumber")); - - assertTrue("The marker should be a map.", object.get("marker") instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> marker = (Map<String, Object>) object.get("marker"); - assertEquals("The marker name is not correct.", "LoneMarker", marker.get("name")); - assertNull("The marker parent should be null.", marker.get("parent")); - - assertTrue("The thrown should be a map.", object.get("thrown") instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> thrown = (Map<String, Object>) object.get("thrown"); - assertEquals("The thrown type is not correct.", "java.lang.RuntimeException", thrown.get("type")); - assertEquals("The thrown message is not correct.", "This is something cool!", thrown.get("message")); - assertTrue("The thrown stack trace should be a list.", thrown.get("stackTrace") instanceof List); - @SuppressWarnings("unchecked") - final List<Map<String, Object>> stackTrace = (List<Map<String, Object>>) thrown.get("stackTrace"); - assertEquals("The thrown stack trace length is not correct.", exception.getStackTrace().length, - stackTrace.size()); - for (int i = 0; i < exception.getStackTrace().length; i++) { - final StackTraceElement e1 = exception.getStackTrace()[i]; - final Map<String, Object> e2 = stackTrace.get(i); - - assertEquals("Element class name [" + i + "] is not correct.", e1.getClassName(), e2.get("className")); - assertEquals("Element method name [" + i + "] is not correct.", e1.getMethodName(), - e2.get("methodName")); - assertEquals("Element file name [" + i + "] is not correct.", e1.getFileName(), e2.get("fileName")); - assertEquals("Element line number [" + i + "] is not correct.", e1.getLineNumber(), - e2.get("lineNumber")); - } - assertNull("The thrown should have no cause.", thrown.get("cause")); - - assertTrue("The context map should be a map.", object.get("contextMap") instanceof Map); - assertEquals("The context map is not correct.", context, object.get("contextMap")); - - assertTrue("The context stack should be list.", object.get("contextStack") instanceof List); - assertEquals("The context stack is not correct.", stack.asList(), object.get("contextStack")); - } - } - - @Test - public void testWriteInternal03() { - given(connection.isClosed()).willReturn(false); - given(message.getFormattedMessage()).willReturn("Another cool message 02."); - - try (final NoSqlDatabaseManager<?> manager = NoSqlDatabaseManager.getNoSqlDatabaseManager("name", 0, - provider)) { - manager.startup(); - - manager.connectAndStart(); - then(provider).should().getConnection(); - - final IOException exception1 = new IOException("This is the cause."); - final SQLException exception2 = new SQLException("This is the result.", exception1); - final Map<String, String> context = new HashMap<>(); - context.put("hello", "world"); - context.put("user", "pass"); - - ThreadContext.push("message1"); - ThreadContext.push("stack2"); - final ThreadContext.ContextStack stack = ThreadContext.getImmutableStack(); - ThreadContext.clearStack(); - - final LogEvent event = Log4jLogEvent.newBuilder() - .setLevel(Level.DEBUG) - .setLoggerName("com.foo.NoSQLDbTest.testWriteInternal02") - .setMessage(message) - .setSource(new StackTraceElement("com.bar.Foo", "anotherMethod03", "Foo.java", 9)) - .setMarker(MarkerManager.getMarker("AnotherMarker").addParents( - MarkerManager.getMarker("Parent1").addParents(MarkerManager.getMarker("GrandParent1")), - MarkerManager.getMarker("Parent2"))) - .setThreadId(1L) - .setThreadName("AnotherThread-B") - .setThreadPriority(1) - .setTimeMillis(987654321564L) - .setThrown(exception2) - .setContextMap(context) - .setContextStack(stack) - .build(); - - manager.writeInternal(event); - then(connection).should().insertObject(captor.capture()); - - final NoSqlObject<Map<String, Object>> inserted = captor.getValue(); - assertNotNull("The inserted value should not be null.", inserted); - final Map<String, Object> object = inserted.unwrap(); - assertNotNull("The unwrapped object should not be null.", object); - - assertEquals("The level is not correct.", Level.DEBUG, object.get("level")); - assertEquals("The logger is not correct.", "com.foo.NoSQLDbTest.testWriteInternal02", - object.get("loggerName")); - assertEquals("The message is not correct.", "Another cool message 02.", object.get("message")); - assertEquals("The thread is not correct.", "AnotherThread-B", object.get("threadName")); - assertEquals("The millis is not correct.", 987654321564L, object.get("millis")); - assertEquals("The date is not correct.", 987654321564L, ((Date) object.get("date")).getTime()); - - assertTrue("The source should be a map.", object.get("source") instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> source = (Map<String, Object>) object.get("source"); - assertEquals("The class is not correct.", "com.bar.Foo", source.get("className")); - assertEquals("The method is not correct.", "anotherMethod03", source.get("methodName")); - assertEquals("The file name is not correct.", "Foo.java", source.get("fileName")); - assertEquals("The line number is not correct.", 9, source.get("lineNumber")); - - assertTrue("The marker should be a map.", object.get("marker") instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> marker = (Map<String, Object>) object.get("marker"); - assertEquals("The marker name is not correct.", "AnotherMarker", marker.get("name")); - - assertTrue("The marker parents should be a list.", marker.get("parents") instanceof List); - @SuppressWarnings("unchecked") - final List<Object> markerParents = (List<Object>) marker.get("parents"); - assertEquals("The marker parents should contain two parents", 2, markerParents.size()); - - assertTrue("The marker parents[0] should be a map.", markerParents.get(0) instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> parent1 = (Map<String, Object>) markerParents.get(0); - assertEquals("The first marker parent name is not correct.", "Parent1", parent1.get("name")); - - assertTrue("The marker parents[1] should be a map.", markerParents.get(1) instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> parent2 = (Map<String, Object>) markerParents.get(1); - assertEquals("The second marker parent name is not correct.", "Parent2", parent2.get("name")); - assertNull("The second marker should have no parent.", parent2.get("parent")); - - assertTrue("The parent1 parents should be a list.", parent1.get("parents") instanceof List); - @SuppressWarnings("unchecked") - final List<Object> parent1Parents = (List<Object>) parent1.get("parents"); - assertEquals("The parent1 parents should have only one parent", 1, parent1Parents.size()); - - assertTrue("The parent1Parents[0] should be a map.", parent1Parents.get(0) instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> parent1parent = (Map<String, Object>) parent1Parents.get(0); - assertEquals("The first parent1 parent name is not correct.", "GrandParent1", parent1parent.get("name")); - assertNull("The parent1parent marker should have no parent.", parent1parent.get("parent")); - - assertTrue("The thrown should be a map.", object.get("thrown") instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> thrown = (Map<String, Object>) object.get("thrown"); - assertEquals("The thrown type is not correct.", "java.sql.SQLException", thrown.get("type")); - assertEquals("The thrown message is not correct.", "This is the result.", thrown.get("message")); - assertTrue("The thrown stack trace should be a list.", thrown.get("stackTrace") instanceof List); - @SuppressWarnings("unchecked") - final List<Map<String, Object>> stackTrace = (List<Map<String, Object>>) thrown.get("stackTrace"); - assertEquals("The thrown stack trace length is not correct.", exception2.getStackTrace().length, - stackTrace.size()); - for (int i = 0; i < exception2.getStackTrace().length; i++) { - final StackTraceElement e1 = exception2.getStackTrace()[i]; - final Map<String, Object> e2 = stackTrace.get(i); - - assertEquals("Element class name [" + i + "] is not correct.", e1.getClassName(), e2.get("className")); - assertEquals("Element method name [" + i + "] is not correct.", e1.getMethodName(), - e2.get("methodName")); - assertEquals("Element file name [" + i + "] is not correct.", e1.getFileName(), e2.get("fileName")); - assertEquals("Element line number [" + i + "] is not correct.", e1.getLineNumber(), - e2.get("lineNumber")); - } - assertTrue("The thrown cause should be a map.", thrown.get("cause") instanceof Map); - @SuppressWarnings("unchecked") - final Map<String, Object> cause = (Map<String, Object>) thrown.get("cause"); - assertEquals("The cause type is not correct.", "java.io.IOException", cause.get("type")); - assertEquals("The cause message is not correct.", "This is the cause.", cause.get("message")); - assertTrue("The cause stack trace should be a list.", cause.get("stackTrace") instanceof List); - @SuppressWarnings("unchecked") - final List<Map<String, Object>> causeStackTrace = (List<Map<String, Object>>) cause.get("stackTrace"); - assertEquals("The cause stack trace length is not correct.", exception1.getStackTrace().length, - causeStackTrace.size()); - for (int i = 0; i < exception1.getStackTrace().length; i++) { - final StackTraceElement e1 = exception1.getStackTrace()[i]; - final Map<String, Object> e2 = causeStackTrace.get(i); - - assertEquals("Element class name [" + i + "] is not correct.", e1.getClassName(), e2.get("className")); - assertEquals("Element method name [" + i + "] is not correct.", e1.getMethodName(), - e2.get("methodName")); - assertEquals("Element file name [" + i + "] is not correct.", e1.getFileName(), e2.get("fileName")); - assertEquals("Element line number [" + i + "] is not correct.", e1.getLineNumber(), - e2.get("lineNumber")); - } - assertNull("The cause should have no cause.", cause.get("cause")); - - assertTrue("The context map should be a map.", object.get("contextMap") instanceof Map); - assertEquals("The context map is not correct.", context, object.get("contextMap")); - - assertTrue("The context stack should be list.", object.get("contextStack") instanceof List); - assertEquals("The context stack is not correct.", stack.asList(), object.get("contextStack")); - } - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/resources/log4j2-mongodb-auth.xml ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/test/resources/log4j2-mongodb-auth.xml b/log4j-nosql/src/test/resources/log4j2-mongodb-auth.xml deleted file mode 100644 index 2eec2b6..0000000 --- a/log4j-nosql/src/test/resources/log4j2-mongodb-auth.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - ---> -<Configuration status="error"> - <Appenders> - <NoSql name="MongoDbAppender"> - <MongoDb databaseName="test" collectionName="applog" server="localhost" userName="log4jUser" password="12345678"/> - </NoSql> - </Appenders> - <Loggers> - <Root level="ALL"> - <AppenderRef ref="MongoDbAppender" /> - </Root> - </Loggers> -</Configuration> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ebec215e/log4j-nosql/src/test/resources/log4j2-mongodb-capped.xml ---------------------------------------------------------------------- diff --git a/log4j-nosql/src/test/resources/log4j2-mongodb-capped.xml b/log4j-nosql/src/test/resources/log4j2-mongodb-capped.xml deleted file mode 100644 index 24d964b..0000000 --- a/log4j-nosql/src/test/resources/log4j2-mongodb-capped.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - 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. - ---> -<Configuration status="error"> - <Appenders> - <NoSql name="MongoDbAppender"> - <MongoDb databaseName="test" collectionName="applog" server="localhost" capped="true" collectionSize="1073741824" /> - </NoSql> - </Appenders> - <Loggers> - <Root level="ALL"> - <AppenderRef ref="MongoDbAppender" /> - </Root> - </Loggers> -</Configuration>