use*_*557 18 logback playframework
我已经创建了一个自定义的logback appender.但是play为appender提供了一个ClassNotFound异常.
以下是我的追加者
package log
import ch.qos.logback.core.AppenderBase
import ch.qos.logback.core.UnsynchronizedAppenderBase
import ch.qos.logback.core.spi.ContextAwareBase
import log.model.LogMessage
import data.OrganizationDao
import log.dao.LogDao
import ch.qos.logback.core.status.Status
class MongoAppender extends ContextAwareBase {
private def add(level:Int, msg: String, ex: Throwable) = {
val message = ex match {
case null => LogMessage(None, level, msg, null, null, new Array[String](0))
case _ => LogMessage(None, level, msg, ex.getClass().getName(), ex.getMessage(), new Array[String](0))
}
LogDao.save(message)
}
override def addStatus(status:Status) = {
add(status.getLevel(), status.getMessage(), status.getThrowable())
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我的logger.xml
<configuration>
<conversionRule conversionWord="coloredLevel"
converterClass="play.api.Logger$ColoredLevel" />
<appender name="Mongo" class="log.MongoAppender">
</appender>
<logger name="play" level="INFO" />
<logger name="application" level="INFO" />
<root level="ERROR">
<appender-ref ref="Mongo" />
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我得到以下stacktrace
Caused by: java.lang.ClassNotFoundException: log.MongoAppender
at at java.net.URLClassLoader$1.run(Unknown Source)
at at java.net.URLClassLoader$1.run(Unknown Source)
at at java.security.AccessController.doPrivileged(Native Method)
at at java.net.URLClassLoader.findClass(Unknown Source)
at at java.lang.ClassLoader.loadClass(Unknown Source)
at at java.lang.ClassLoader.loadClass(Unknown Source)
at at ch.qos.logback.core.util.OptionHelper.instantiateByClassNameA
ndParameter(OptionHelper.java:60)
Run Code Online (Sandbox Code Playgroud)
我已经检查了appender类是否编译并检查了编译的字节代码.为什么不玩捡起来?
aga*_*bor 13
似乎在dev模式下play的动态编译类不可用于logback.我正在努力解决同样的问题.将我的自定义appender放到一个单独的jar文件中对我有用.我假设在prod中使用暂存的最终jar文件,这应该不是问题.
| 归档时间: |
|
| 查看次数: |
2563 次 |
| 最近记录: |