1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.logging.log4j.nosql.appender.mongodb;
18
19 import org.apache.logging.log4j.Level;
20 import org.apache.logging.log4j.Logger;
21 import org.apache.logging.log4j.core.appender.AppenderLoggingException;
22 import org.apache.logging.log4j.nosql.appender.AbstractNoSqlConnection;
23 import org.apache.logging.log4j.nosql.appender.NoSqlConnection;
24 import org.apache.logging.log4j.nosql.appender.NoSqlObject;
25 import org.apache.logging.log4j.status.StatusLogger;
26 import org.bson.BSON;
27 import org.bson.Transformer;
28
29 import com.mongodb.BasicDBObject;
30 import com.mongodb.DB;
31 import com.mongodb.DBCollection;
32 import com.mongodb.MongoException;
33 import com.mongodb.WriteConcern;
34
35
36
37
38 public final class MongoDbConnection extends AbstractNoSqlConnection<BasicDBObject, MongoDbObject> {
39
40 private static final Logger LOGGER = StatusLogger.getLogger();
41
42 static {
43 BSON.addEncodingHook(Level.class, new Transformer() {
44 @Override
45 public Object transform(final Object o) {
46 if (o instanceof Level) {
47 return ((Level) o).name();
48 }
49 return o;
50 }
51 });
52 }
53
54 private final DBCollection collection;
55 private final WriteConcern writeConcern;
56
57 public MongoDbConnection(final DB database, final WriteConcern writeConcern, final String collectionName) {
58 this.collection = database.getCollection(collectionName);
59 this.writeConcern = writeConcern;
60 }
61
62 @Override
63 public MongoDbObject createObject() {
64 return new MongoDbObject();
65 }
66
67 @Override
68 public MongoDbObject[] createList(final int length) {
69 return new MongoDbObject[length];
70 }
71
72 @Override
73 public void insertObject(final NoSqlObject<BasicDBObject> object) {
74 try {
75 this.collection.insert(object.unwrap(), this.writeConcern);
76 } catch (final MongoException e) {
77 throw new AppenderLoggingException("Failed to write log event to MongoDB due to error: " + e.getMessage(),
78 e);
79 }
80 }
81
82 @Override
83 public void closeImpl() {
84
85
86
87 }
88
89 }