varargs SLF4J về các cuộc gọi đăng nhập là khá hữu ích trong công việc của tôi JavaLàm cách nào để tận dụng việc ghi nhật ký SLF4J trong khung công tác Play2.1?
Logger log = LoggerFactory.getLogger(getClass());
log.debug("Hello, {}. The current time is {}", "robert", new Date());
Cố gắng để làm ví dụ đơn giản này trong Chơi 2.1 Khung/Scala và tôi chạy vào trình biên dịch từ chối tôi.
import play.api._
import play.api.mvc._
import org.slf4j.LoggerFactory
object Application extends Controller {
val log: org.slf4j.Logger = LoggerFactory.getLogger(getClass())
def hb = Action {
val message = makeMessage()
// COMPILER HATES THIS: ambiguous reference compiler error here
log.info("Hello {}. The current time is {}", "robert", new java.util.Date())
Ok(message)
}
def makeMessage(): String = { return "stuff" }
}
[dm2-server] $ compile
[info] Compiling 2 Scala sources to /Users/bobk/work/dm2-server/target/scala-2.10/classes...
[error] /Users/bobk/work/dm2-server/app/controllers/Application.scala:16: ambiguous reference to overloaded definition,
[error] both method info in trait Logger of type (x$1: String, x$2: <repeated...>[Object])Unit
[error] and method info in trait Logger of type (x$1: String, x$2: Any, x$3: Any)Unit
[error] match argument types (String,String,java.util.Date)
[error] log.info("Hello {}. The current time is {}", "robert", new java.util.Date())
[error] ^
[error] one error found
[error] (compile:compile) Compilation failed
[error] Total time: 1 s, completed Jun 6, 2013 10:54:41 AM
Lỗi đó là gì và làm cách nào để khắc phục nó để gọi đến API SLF4J? Nếu tôi không thể làm điều đó, làm cách nào tôi có thể sử dụng Khung ghi nhật ký Play 2.1 để nhận các vararg trong các cuộc gọi đăng nhập của mình? Có điều gì đó không đúng ở vùng đất Scala.
Câu trả lời hay. Quay trở lại không phải là một lựa chọn cho tôi. Rock: Hard Place. Có vẻ như tôi phải từ bỏ API của SLF4J và nhận được varargi-ness của tôi từ String.format của Scala. Tôi đã thực hiện các tiêu chuẩn trong quá khứ của SLF4J "{}" so với String.format của Java và SL4J xuất hiện trên đầu trang. Quá tệ tôi dường như bị mắc kẹt với con đường có hiệu suất thấp nhất. Có lẽ thời gian của mình để chạy lại các tiêu chuẩn để xem nếu nó thực sự là xấu. –