85 lines
2.1 KiB
Java
85 lines
2.1 KiB
Java
package com.didispace.log;
|
|
|
|
import com.mongodb.BasicDBObject;
|
|
import com.mongodb.DBObject;
|
|
import com.mongodb.MongoClient;
|
|
import com.mongodb.MongoClientURI;
|
|
import com.mongodb.client.MongoCollection;
|
|
import com.mongodb.client.MongoDatabase;
|
|
import org.apache.log4j.AppenderSkeleton;
|
|
import org.apache.log4j.spi.LoggingEvent;
|
|
import org.bson.Document;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.ObjectOutputStream;
|
|
|
|
/**
|
|
* 日志插入MongoDB
|
|
*
|
|
* @author 程序猿DD
|
|
* @version 1.0.0
|
|
* @date 16/5/23 下午4:53.
|
|
* @blog http://blog.didispace.com
|
|
*/
|
|
public class MongoAppender extends AppenderSkeleton {
|
|
|
|
private MongoClient mongoClient;
|
|
private MongoDatabase mongoDatabase;
|
|
private MongoCollection<BasicDBObject> logsCollection;
|
|
|
|
private String connectionUrl;
|
|
private String databaseName;
|
|
private String collectionName;
|
|
|
|
@Override
|
|
protected void append(LoggingEvent loggingEvent) {
|
|
|
|
if(mongoDatabase == null) {
|
|
MongoClientURI connectionString = new MongoClientURI(connectionUrl);
|
|
mongoClient = new MongoClient(connectionString);
|
|
mongoDatabase = mongoClient.getDatabase(databaseName);
|
|
logsCollection = mongoDatabase.getCollection(collectionName, BasicDBObject.class);
|
|
}
|
|
logsCollection.insertOne((BasicDBObject) loggingEvent.getMessage());
|
|
|
|
}
|
|
|
|
@Override
|
|
public void close() {
|
|
if(mongoClient != null) {
|
|
mongoClient.close();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean requiresLayout() {
|
|
return false;
|
|
}
|
|
|
|
public String getConnectionUrl() {
|
|
return connectionUrl;
|
|
}
|
|
|
|
public void setConnectionUrl(String connectionUrl) {
|
|
this.connectionUrl = connectionUrl;
|
|
}
|
|
|
|
public String getDatabaseName() {
|
|
return databaseName;
|
|
}
|
|
|
|
public void setDatabaseName(String databaseName) {
|
|
this.databaseName = databaseName;
|
|
}
|
|
|
|
public String getCollectionName() {
|
|
return collectionName;
|
|
}
|
|
|
|
public void setCollectionName(String collectionName) {
|
|
this.collectionName = collectionName;
|
|
}
|
|
|
|
}
|