2011-01-12 66 views
11

nói rằng tôi có văn bản nhiều dòng "a \ nb \ nc"; khi tôi đăng nhập nó, ví dụ với phương pháp "gỡ lỗi", tôi chỉ nhận được một nhật ký;Hiển thị nhật ký trên mỗi dòng cho văn bản nhiều dòng

đây là hành vi dự kiến ​​nhưng sau đó các dòng trừ người đầu tiên được hiển thị quá ở bên trái trong đầu ra:

1234 [1] [DEBUG] Test - a 
b 
c 
1235 [1] [DEBUG] Test - ... 

Một cách giải quyết đơn giản là để tạo ra một bản ghi trên mỗi dòng để có được:

1234 [1] [DEBUG] Test - a 
1235 [1] [DEBUG] Test - b 
1236 [1] [DEBUG] Test - c 
1237 [1] [DEBUG] Test - ... 

_

Có cách nào để xử lý loại này tự động hay tôi nên viết trình bao bọc đơn giản để quản lý việc này cài đặt ?

_

Xin cảm ơn trước.

+1

Tôi không nghĩ điều đó là có thể. Nếu bạn viết một trình bao bọc - trình bao bọc sẽ chia thành '\ n' và gọi' logger.log' nhiều lần số dòng. Không tốt tôi muốn nói. – Nishant

+0

@Nantant: cảm ơn vì đã xem xét vấn đề. Một wrapper có thể là một appender tùy chỉnh mà sẽ kế thừa từ loại appender hiện tại của tôi hoặc, tốt hơn, là một trang trí chung chung mà có thể bọc bất kỳ appender. Sau đó tôi tự hỏi làm thế nào để thể hiện loại cấu trúc này trong tệp cấu hình XML. – Pragmateek

Trả lời

8

Không thể và không được khuyến cáo.

Trong ví dụ đầu tiên của bạn, rõ ràng là có hai câu lệnh đăng nhập, trong khi trong ví dụ thứ hai, bạn có thể giả sử rằng có bốn trong số chúng.

Một tuyên bố đăng nhập phải cung cấp thông tin nguồn duy nhất về những gì đã xảy ra và thời điểm điều đó xảy ra và thông tin đó sẽ hữu ích theo một cách nào đó.

Hãy tưởng tượng nếu bạn có một tuyên bố lỗi, giống như một ngoại lệ, nó sẽ trải dài trên 30 hoặc nhiều dòng vì dấu vết ngăn xếp của nó. Điều đó sẽ trông giống như 30 lỗi trong trường hợp của bạn và một công cụ tự động cũng có thể báo cáo là 30 lỗi. Đây là thông tin sai lạc và nên tránh.

Chưa kể "một bản ghi nhật ký! = Một bản ghi được viết" có thể gây ra sự cố đồng bộ hóa khi bạn xử lý các tình huống ghi nhật ký phức tạp hơn, với nhiều chủ đề ghi vào cùng một tệp cùng một lúc hoặc tệ hơn, nhiều JVM làm như vậy.

Nếu điều "quá xa bên trái" khiến bạn cảm thấy đau buồn, tôi khuyên bạn nên xử lý một số bài đăng trên tệp nhật ký được tạo, chẳng hạn như thêm 8 dấu cách vào đầu mỗi dòng chứa [DEBUG], [INFO], ...

+0

cảm ơn câu trả lời của bạn; thực sự tôi đồng ý với lý lẽ của bạn về việc sử dụng các công cụ. Nghĩ rằng nó không phải là trường hợp sử dụng của tôi, nó dường như không phải là một thực hành tốt. – Pragmateek

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