2012-08-01 33 views
19

Tôi đã có một answer về cách sử dụng SocketAppender (tôi cần nó để thu thập nhật ký từ hệ thống phân tán), nhưng tôi mới dùng log4j và tôi không biết cách sử dụng mã mẫu đó.log4j: Cách sử dụng SocketAppender?

Có lẽ tôi nên có log4j-server.properties như thế:

log4j.appender.SERVER=org.apache.log4j.net.SocketAppender 
log4j.appender.SA.Port=4712 
log4j.appender.SA.RemoteHost=loghost 
log4j.appender.SA.ReconnectionDelay=10000 

Nhưng tôi vẫn không biết làm thế nào để khởi động server (làm thế nào để sử dụng dòng này)

org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

Và điều gì là quan trọng nhất: Ở đâu \ Làm cách nào tôi có thể xem nhật ký của mình?

+0

Chúng được gọi là đối số dòng lệnh. – Woot4Moo

Trả lời

41

Bạn có thể chạy các máy chủ sử dụng

java -classpath log4j.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties 

Các SimpleSocketServer nhận đăng sự kiện gửi đến số cổng theo quy định của điều khiển từ xa SocketAppender, và ghi chúng như thể họ đã được tạo ra tại địa phương, theo cấu hình bạn nguồn cung cấp trong log4j-server.properties. Bạn có thể định cấu hình trình điều khiển/tệp/tệp liên quan đến trình điều khiển có liên quan và đính kèm chúng vào trình ghi nhật ký tương ứng giống như bạn đã thực hiện ghi nhật ký trực tiếp trong quá trình gốc thay vì thực hiện các sự kiện nhật ký trên ổ cắm mạng. I E. nếu bạn hiện đang tạo ra file log địa phương với một cái gì đó như:

log4j.rootLogger=DEBUG, file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=logfile.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n 

sau đó bạn sẽ thay đổi nó để việc gửi bên log4j.properties chỉ đơn giản nói

log4j.rootLogger=DEBUG, server 
log4j.appender.server=org.apache.log4j.net.SocketAppender 
log4j.appender.server.Port=4712 
log4j.appender.server.RemoteHost=loghost 
log4j.appender.server.ReconnectionDelay=10000 

và server-side log4j-server.properties chứa các định nghĩa đó trước đây ở bên gửi:

log4j.rootLogger=DEBUG, file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=logfile.log 
log4j.appender.file.MaxFileSize=1MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n 

Đặc biệt, lưu ý rằng không có điểm xác định bố cục trên SocketAppender ở phía gửi - những gì đi qua mạng là toàn bộ đối tượng sự kiện ghi nhật ký, đó là bên nhận chịu trách nhiệm thực hiện bố cục.

+0

Cảm ơn rất nhiều, nó hoạt động :) nhưng tôi vẫn có một câu hỏi. Bây giờ tôi nhận thêm nhật ký như '[2012-08-01 15: 20: 39,950] [chính] [Đã kết nối với ứng dụng khách tại /127.0.0.1] [2012-08-01 15: 20: 39,950] [chính] [Bắt đầu nút ổ cắm mới.] [2012-08-01 15: 20: 39,950] [chính] [Đang chờ chấp nhận một khách hàng mới.] 'Tôi nên làm gì để tránh đăng nhập này? – alicjasalamon

+1

Những thông tin đó giống như thông điệp được tạo bởi chính máy chủ socket. Bạn sẽ phải tinh chỉnh cấu hình đăng nhập của mình một chút. Tùy thuộc vào mức độ của các thông báo bổ sung này có thể đủ để đặt trình ghi nhật ký gốc phía máy chủ thành ERROR thay vì DEBUG và sau đó thêm 'log4j.logger.com.example = DEBUG' hoặc bất kỳ điều gì phù hợp với nhật ký mà bên gửi của bạn đăng nhập vào. –

+0

Còn hỗ trợ cho Log4J 2 thì sao? – Donatello

0

Để khởi động kiểu đơn giản máy chủ dưới đây lệnh trong cửa sổ lệnh và máy chủ sẽ được dựng và hoạt:

java -classpath C: org.apache Users.m2repositorylog4jlog4j1.2.17log4j-1.2.17.jar. log4j.net.SimpleSocketServer 4712 log4j-server.properties

Xin đừng quên chỉ định đường dẫn chính xác của log4j.jar trong hệ thống của bạn.

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