2013-01-24 28 views
11

Khi sử dụng sbt với forking (fork in run := true), mọi đầu ra từ ứng dụng của tôi tới giá trị stdout được bắt đầu bằng [info]; đầu ra cho stderr được bắt đầu bằng [error].sbt: ngăn chặn tiền tố đăng nhập trong stdout

Hành vi này hơi khó chịu khi sử dụng khung ghi nhật ký Java, kết quả đầu ra cho tiêu chuẩn. Thông báo gỡ lỗi kết quả thường trông giống như sau:

[error] [main] INFO MyClass ... 
[error] [main] DEBUG MyClass ... 

Tôi muốn loại bỏ các tiền tố này khi chạy mã mà không cần cố định. Những gì tôi đã thử:

  • đặt sbt -Dsbt.log.noformat=true trong tập lệnh khởi chạy sbt. Nhưng điều này chỉ loại bỏ đầu ra ANSI màu; tiền tố vẫn ở đó mà không có màu
  • cài đặt logLevel in run := Level.Error trong build.sbt. Điều này dường như không có bất kỳ ảnh hưởng nào đối với việc đăng nhập bằng việc giả mạo.

Có cách nào để chặn tiền tố không?

+0

tôi tò mò về vấn đề này quá. – Andy

+0

Tìm thấy nó! Tôi đã theo dõi nguồn gốc về cách SBT khởi chạy các quy trình: https://github.com/sbt/sbt/blob/0.13/run/src/main/scala/sbt/Fork.scala. Và sau đó tôi chỉ đơn giản là tìm kiếm một số từ khóa từ tập tin đó. – Andy

Trả lời

10

Bạn cần đặt output strategy dự án của mình.

Trong xây dựng mở rộng của tôi, tôi có các cài đặt sau:

settings = Project.defaultSettings ++ Seq(
    fork     := true, // Fork to separate process 
    connectInput in run := true, // Connects stdin to sbt during forked runs 
    outputStrategy  := Some(StdoutOutput) // Get rid of output prefix 
    // ... other settings 
) 
+0

Cảm ơn bạn rất nhiều! Có vẻ như chiến lược đầu ra là một tính năng mới của 0.13? Iirc, tôi không thấy bất cứ điều gì liên quan đến chiến lược đầu ra trong 0,12. – bluenote10

+0

Tôi đang chạy 0,12,3 và tính năng này hoạt động tốt cho tôi. – Andy

+0

Vâng, tôi chỉ có thời gian để thử nghiệm nó. Hoạt động hoàn hảo! – bluenote10

Các vấn đề liên quan