2011-01-05 16 views
5

Làm cách nào để xóa tệp server.log của JBoss khi JBoss đang chạy? Khi tôi cố gắng làmLàm thế nào để xóa server.log trong JBoss?

echo 1 > server.log 

tôi nhận được msg lỗi rằng file đang được sử dụng bởi một chương trình khác (JBoss). Có thể sử dụng công cụ dòng lệnh không (windows hoặc linux (Tôi có CygWin)) hoặc một ứng dụng mà tôi có thể tự viết để xóa tệp đó?

P.S. Tôi không cần tập tin đó để có 0kb, nhưng tôi muốn nó có nhỏ hơn 100MB.

Trả lời

3

Theo mặc định, JBoss giữ tệp bị khóa vì nó đang ghi thông điệp tường trình vào đó. Nó bị khóa miễn là JBoss đang chạy và tôi không biết cách nào khác để giải phóng nó hơn là ngăn chặn JBoss.

Để giữ kích thước của nó trong tầm kiểm soát, bạn có thể sửa đổi cấu hình nhật ký của mình, theo mặc định là <server>/conf˛jboss-log4j.xml. Bạn có thể chỉ định kích thước tối đa của tệp nhật ký và xác định việc cần làm khi đạt đến kích thước đó: cuộn qua tệp mới, cắt bớt tệp hiện có và bắt đầu viết lại nó, v.v.

Ví dụ cơ bản (không được kiểm tra, do đó không đảm bảo rằng nó hoạt động thẳng vì nó là):

<appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender"> 
      ... 
      <param name="maxFileSize" value="100MB" /> 
      ... 
    </appender> 

Hơn nữa, với các thông số maxBackupIndex bạn có thể xác định số lượng các tập tin sao lưu (mặc định là 1).

1

JBoss khóa tệp miễn là quá trình ghi nhật ký đang chạy.

Nếu bạn bật bảng điều khiển JMX, bạn có thể dừng ghi nhật ký, xóa/sửa nhật ký và bắt đầu lại dịch vụ ghi nhật ký.

Url nên giống như thế này (đối với log4j):

http://jboss.example.com:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system%3Atype%3DLog4jService%2Cservice%3DLogging

Tôi thử nghiệm này với JBoss 5.

Giải pháp này nên được kịch bản là tốt.

Về vấn đề kích thước tệp nhật ký của bạn: Bạn nên sử dụng phương pháp cấu hình thay vì chỉnh sửa tệp nhật ký theo cách thủ công.