2012-02-26 41 views
18

Tôi đang gặp sự cố khi tìm tệp nhật ký của mình.Ghi nhật ký Java - tệp nhật ký của tôi ở đâu?

Tôi đang sử dụng Java Logging - java.util.logging - trong Eclipse 3.7.1 trên Windows XP. Các dòng có liên quan của tập tin logging.properties của tôi là:

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler 
.level=INFO 
java.util.logging.FileHandler.pattern = %h/java%u.log 
java.util.logging.FileHandler.limit = 50000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

Theo như tôi có thể tìm ra, sau khi tôi thực hiện hai dòng sau:

Logger logger = Logger.getLogger("test"); 
logger.logp(Level.INFO, "myClass", "myMethod", "Alcatraz"); 

tập tin đăng nhập của tôi phải ở trong C:\Documents and Settings\[My Windows ID]\javaX.log nơi X là một số nguyên .

Tôi có 5 tệp java.log khác nhau trong thư mục đó, java0.log đến java4.log, nhưng không có tệp nào chứa nhật ký nhật ký của tôi hoặc thậm chí là bản ghi có ngày hôm nay trên đó. Tôi đã thực hiện một số việc vặt và tìm thấy Tracing and Logging ngụ ý rằng nhật ký của tôi phải ở một vị trí khác, c:\Documents and Settings\[My Windows ID]\Application Data\Sun\Java\Deployment\log. Có một tệp ở đó, có tên là plugin5581819941091650582.log, nhưng về cơ bản là trống:

<?xml version="1.0" encoding="windows-1252" standalone="no"?> 
<!DOCTYPE log SYSTEM "logger.dtd"> 
<log> 
</log> 

Ngày tạo của nó là tuần trước. (Tôi không chắc chắn quá trình nào đã tạo ra nó; tôi chắc chắn không tạo ra nó rõ ràng.)

Vậy thì tệp nhật ký của tôi ở đâu? Tôi không thể nghĩ ra bất cứ nơi nào khác để nhìn.

Ngoài ra, có ai biết khi nào thay đổi thành logging.properties có hiệu lực không? Nếu tôi thay đổi cấp độ nhật ký hoặc FileHandler.pattern, điều gì sẽ xảy ra trước khi chương trình của tôi thấy thay đổi? Chỉ cần lưu các thay đổi trong logging.properties rõ ràng là không đủ. Tôi có cần khởi động lại Eclipse không? Hoặc khởi động lại máy tính? Chỉ tò mò thôi. Đó không phải là một thỏa thuận lớn đối với tôi khi tìm ra nơi đăng nhập của tôi.

+0

Nếu bạn muốn kiểm soát nhiều hơn các bản ghi của bạn, tôi có thể đề nghị kéo trong một thư viện gọi Đăng lại? Hoặc bạn có thể kiểm tra log4j. – wheaties

Trả lời

16

Tệp logging.properties của bạn nằm ở đâu? Nó sẽ có sẵn trong thư mục gốc của classpath. Như một kiểm tra sanity, những gì hiện các mã sau đây in?

System.out.println(getClass().getClassLoader().getResource("logging.properties")); 

Nếu mã là trong bối cảnh static, sử dụng

System.out.println(ClassName.class.getClassLoader().getResource("logging.properties")); 
+0

Tôi đang sử dụng Eclipse 3.7.1 và có một vài JRE khác nhau được cài đặt nhưng cái tôi đang sử dụng trong dự án sandbox này là một JDK 1.6.0_18. Tệp logging.properties nằm trong C: \ Program Files \ Java \ jdk1.6.0_18 \ jre \ lib. Xin lỗi, tôi muốn ngắt dòng ở đây nhưng khi tôi nhấn Enter, nó sẽ đóng cửa sổ. Khi tôi thử System.out.println() tôi nhận được một null. Rõ ràng mã của tôi không nhìn thấy tệp logging.properties và đó là lý do tại sao tệp nhật ký không đi đến nơi tôi muốn nó đi. Bây giờ tôi cần phải tìm ra lý do tại sao nó không thể nhìn thấy logging.properties. Vâng, tôi sẽ bắt đầu tìm kiếm và nếu có ai có đề xuất, tôi đang nghe ... –

+0

Tôi đã hỏi cách thêm tệp logging.properties vào classpath trong một câu hỏi mới và đã làm những gì tôi đã nói. Println() hiện đang cho tôi đường dẫn đến tệp ghi nhật ký, thuộc tính thay cho giá trị rỗng. Nhưng tôi vẫn không thấy tệp nhật ký của mình. Tôi đã có năm tệp javaX.log giống như trước và tất cả chúng không thay đổi. Bất kỳ ý tưởng về cách tìm ra điều này? –

+2

đang in 'null' – justSaid

2

File .log nằm trong thư mục \ workspace.metadata của bạn. Tôi đang sử dụng Eclipse 4.2. Chỉ cần một noob cố gắng để giúp các noobs khác.

0

Nếu giá trị rỗng của nó, thì đường dẫn tệp sẽ là thư mục chủ nhật thực của bạn. Tệp logging.properties của bạn không bị hệ thống đánh thức, do đó hãy trỏ tệp thuộc tính đến đường dẫn đầy đủ như được hiển thị bên dưới, tệp nhật ký của bạn sẽ được tạo ở vị trí của directr nơi yor thích nó. -Djava.util.logging.config.file = D: \ keplereclipse \ keplerws \ NFCInvoicingProject \ WebContent \ WEB-INF \ logging.properties

1

Nguyên nhân gốc rễ của vấn đề mà người hỏi đang gặp phải là tệp logging.properties của anh ấy không được đọc.
Tệp được chỉ định trong java.util.logging.config.file không được đọc từ đường dẫn lớp. Thay vào đó nó được đọc từ hệ thống tệp tương đối với thư mục hiện tại.
Ví dụ: chạy lệnh sau java -Djava.util.logging.config.file=smclient-logging.properties SMMain sẽ đọc số smclient-logging.properties từ thư mục hiện tại. Khi java.util.logging.config.file đúng được đọc, các bản ghi được tạo ra như được chỉ định trong tệp.

0

Dường như vị trí mặc định đã thay đổi. Để tìm logfile của bạn, hãy mở Java Console bằng ứng dụng của bạn. trong đó nhấn "s". Điều này sẽ in ra System- và Deployment-Properties, nơi bạn có thể tìm thấy một cái gì đó như:

deployment.user.logdir = C:\Users\username\AppData\LocalLow\Sun\Java\Deployment\log 

Ở đó bạn sẽ tìm thấy logfiles của bạn.

0

Vị trí của tệp nhật ký có thể được kiểm soát thông qua tệp logging.properties. Và nó có thể được thông qua như là JVM tham số ví dụ: java -Djava.util.logging.config.file=/scratch/user/config/logging.properties

chi tiết: https://docs.oracle.com/cd/E23549_01/doc.1111/e14568/handler.htm

Cấu hình File handler

Để gửi các bản ghi vào một tập tin, thêm FileHandler đến xử lý tài sản trong khai thác gỗ. tệp thuộc tính. Điều này sẽ cho phép ghi nhật ký tệp trên toàn cầu.

handlers= java.util.logging.FileHandler 

Configure xử lý bằng cách thiết lập các thuộc tính sau:

java.util.logging.FileHandler.pattern=<home directory>/logs/oaam.log 
java.util.logging.FileHandler.limit=50000 
java.util.logging.FileHandler.count=1 
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter 

java.util.logging.FileHandler.pattern xác định vị trí và mô hình của các tập tin đầu ra. Cài đặt mặc định là thư mục chính của bạn.

java.util.logging.FileHandler.limit chỉ định, theo byte, số tiền tối đa mà trình ghi nhật ký ghi vào bất kỳ tệp nào.

java.util.logging.FileHandler.count chỉ định số lượng tệp đầu ra để xoay vòng.

java.util.logging.FileHandler.formatter chỉ định lớp định dạng java.util.logging mà lớp trình xử lý tệp sử dụng để định dạng thông báo tường trình. SimpleFormatter viết tóm tắt ngắn gọn "con người có thể đọc được" của các bản ghi nhật ký.

Để hướng dẫn java để sử dụng tập tin này cấu hình thay vì $ JDK_HOME/jre/lib/logging.properties:

java -Djava.util.logging.config.file=/scratch/user/config/logging.properties 
Các vấn đề liên quan