2010-03-06 25 views
5

Tôi không thể tìm lại thư viện cho phép định dạng các câu lệnh xuất nhật ký theo cách đẹp hơn những gì thường thấy. Một trong những tính năng tôi nhớ là nó có thể 'bù đắp' thông điệp tường trình tùy thuộc vào 'nestedness' của nơi mà các báo cáo đăng nhập đã xảy ra.Java: thư viện có kết quả đầu ra nhật ký được định dạng đẹp

Đó là, thay vì điều này:

DEBUG | DefaultBeanDefinitionDocumentReader.java| 86 | Loading bean definitions 
DEBUG | AbstractAutowireCapableBeanFactory.java| 411 | Finished creating instance of bean 'MS-SQL' 
DEBUG | DefaultSingletonBeanRegistry.java| 213 | Creating shared instance of singleton bean 'MySQL' 
DEBUG | AutowireCapableBeanFactory.java| 383 | Creating instance of bean 'MySQL' 
DEBUG | AutowireCapableBeanFactory.java| 459 | Eagerly caching bean 'MySQL' to allow for resolving potential circular references 
DEBUG | AutowireCapableBeanFactory.java| 789 | Another debug message 

Nó sẽ cho thấy một cái gì đó như thế này:

DEBUG | DefaultBeanDefinitionDocumentReader.java| 86 | Loading bean definitions 
DEBUG | AbstractAutowireCapableBeanFactory.java | 411 | Finished creating instance of bean 'MS-SQL' 
DEBUG | DefaultSingletonBeanRegistry.java  | 213 | Creating shared instance of singleton bean 'MySQL' 
DEBUG | AutowireCapableBeanFactory.java   | 383 | Creating instance of bean 'MySQL' 
DEBUG | AutowireCapableBeanFactory.java   | 459 | |__ Eagerly caching bean 'MySQL' to allow for resolving potential circular references 
DEBUG | AutowireCapableBeanFactory.java   | 789 |  |__ Another debug message 

Đây là một ví dụ tôi chỉ cần thực hiện lên (VeryLongCamelCaseClassNamesNotMine). Nhưng tôi nhớ đã thấy đầu ra nhật ký được định dạng rõ ràng và chúng thực sự đẹp hơn bất cứ thứ gì tôi đã thấy trước đây, và ngoài việc đơn giản hơn, chúng cũng dễ đọc hơn khi chúng tái tạo một số tổ chức hợp lý của mã.

Tuy nhiên, tôi không thể tìm thấy thư viện đó nữa.

Tôi khá chắc chắn rằng nó hoàn toàn tương thích với log4j hoặc sl4j.

+2

Các bạn đã nhìn PatternLayout log4j không? Có vẻ như nó bao gồm các định dạng mà bạn muốn http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html – marklai

+0

@marklai: +1 nhận xét của bạn, điều thú vị là dường như nó có thể hoạt động, nhưng tôi thực sự sau khi một thư viện/API tồn tại (đối với Java) nhưng tôi chỉ đơn giản là không thể tìm thấy nữa. Và nó có nghĩa là "logging theo indent level" thinggamagic. Tôi đang thử snap.com trong chế độ trực quan để tìm lại trang web của dự án nhưng chỉ đơn giản là không thể tìm thấy nó: ( – SyntaxT3rr0r

+0

Không chắc chắn thư viện là gì, nhưng bạn có lẽ nên xem cho một hit hiệu suất. Nếu thư viện indents stuff by itse Nếu có, nó có thể sử dụng ngăn xếp để có thể tính toán độ sâu của nó. Vấn đề là để có được ngăn xếp, nó phải ném một ngoại lệ, bắt nó và nhận được dấu vết ngăn xếp từ đó. Đây có lẽ là cách log4j xuất ra tên phương thức được gọi và nó cảnh báo về các vấn đề hiệu năng nghiêm trọng (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html). –

Trả lời

1

tôi thấy hai điều trong các mẫu mã của bạn:

  1. Padding của classnames theo tên dài nhất
  2. Tin nhắn của biến đổi tùy thuộc vào "làm tổ".

Đối với 1. Tôi hầu như không thấy việc này có thể được thực hiện như thế nào, vì bạn không bao giờ biết loại sẽ đăng nhập trong tương lai. Chắc chắn, bạn có thể thêm đệm theo tên lớp dài nhất mà bao giờ được đăng nhập nhưng tệp sẽ không đẹp như mẫu của bạn khi tên lớp dài hơn được ghi nhật ký.

Đối với 2. Người ta có thể triển khai bộ lọc (xem here để biết tài liệu về bộ lọc) sẽ nghiên cứu dữ liệu người gọi và thêm một số loại tiền tố "được lồng vào" như bạn đã viết trong ví dụ của mình. Đây không phải là một nhiệm vụ quá khó, tôi đoán vậy.

Hope this helps ... mặc dù tôi không cung cấp cho bạn với các liên kết đến các lib bạn đang tìm kiếm ... :-(

+0

Tôi không thể hiểu tại sao nhật ký chứa .java với tên lớp ... nó không giống như nó giúp. –

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