mongodb - Cannot serialize log message using NoSQLAppender in Log4j2 -
could guys demonstrate how use nosqlappender in log4j2 (2.0-beta8) mongodb ?
i'm using scala (although don't think it's relevant).
java mongo db driver have 2.11.2
appender throws following exception
2013-07-31 18:19:27,831 error exception occurred processing appender databaseappender java.lang.illegalargumentexception: can't serialize class org.apache.logging.log4j.level @ org.bson.basicbsonencoder._putobjectfield(basicbsonencoder.java:270) @ org.bson.basicbsonencoder.putobject(basicbsonencoder.java:174) @ org.bson.basicbsonencoder.putobject(basicbsonencoder.java:120) @ com.mongodb.defaultdbencoder.writeobject(defaultdbencoder.java:27) @ com.mongodb.outmessage.putobject(outmessage.java:289) @ com.mongodb.dbapilayer$mycollection.insert(dbapilayer.java:239) @ com.mongodb.dbapilayer$mycollection.insert(dbapilayer.java:204) @ com.mongodb.dbcollection.insert(dbcollection.java:148) @ com.mongodb.dbcollection.insert(dbcollection.java:91) @ org.apache.logging.log4j.core.appender.db.nosql.mongo.mongodbconnection.insertobject(mongodbconnection.java:61)
well, ended implementing transformer level enum this
class levelbsonencoder extends org.bson.transformer { def transform(o: any): anyref = o match { case level: org.apache.logging.log4j.level => new java.lang.integer(level.intlevel()) } } // used org.bson.bson.addencodinghook(org.apache.logging.log4j.level.error.getclass, new levelbsonencoder()) if know more elegant solution let me know.
ps. well, quick. reported bug https://issues.apache.org/jira/browse/log4j2-330 , maintainers confirmed suggested fix incorporated repo.
Comments
Post a Comment