我有一个Main非角色类,其中定义了路由。
我想将对这些路由的传入请求记录到一个特定的日志文件中,但是它们正在被记录到“根”日志文件中。
val logger = LoggerFactory.getLogger("access_log")l
logger.info("log to access log") //<--- is logged in access log file
val routes =
path("ping" ) {
logRequest("logging ping", Logging.InfoLevel) { <-- logged to root log
complete("pong")
}
}
}
documentation指出“要更改记录器,请使用withLog包裹此指令。”但我不知道如何将logger
更改为{{ 1}}被调用。
我的logback.xml有一个记录器条目
LoggingAdapter
有人可以帮忙吗?
编辑2:在@Ramon J Romero和Vigil更新了他的答案之后,我意识到我可以简单地(给出正确配置的logback.xml)来做
:withLog
编辑:
基于@Ramon J Romero和Vigil的回答,我可以通过执行以下操作将请求记录到我的access_log中:
<logger name="access_log" level="INFO">
<appender-ref ref="ACCESSLOG" />
</logger>
答案 0 :(得分:3)
如果你要使用LoggerFactory
强>
似乎您是直接使用slf4j
而不是使用akka的日志记录机制,但是您希望akka使用slf4j Logger
而不是它自己的LoggingAdapter
。不建议使用这种类型的日志系统混合和匹配,更容易坚持使用其中的一种。
如果需要进行这种混合,则可以使用已创建的Logger
并覆盖LoggingAdapter中的所有抽象字段,手动创建LoggingAdapter:
val logger = LoggerFactory.getLogger("access_log")
val loggingAdapter : LoggingAdapter = new LoggingAdapter {
override def isDebugEnabled : Boolean = logger.isDebugEnabled
override def isErrorEnabled : Boolean = logger.isErrorEnabled
...
}
在适配器现在可以通过将withLog
指令中使用。
直接使用Akka记录
直接使用akka's logging functionality要容易得多。
这仍允许您interact with the slf4j api。通过使用slf4j API,您可以指定要使用的logback附加程序,包括在配置设置中指定了输出文件的file appenders。