Где мой файл журнала? - PullRequest
1 голос
/ 28 февраля 2012

У меня проблемы с поиском файлов физического журнала. Я использую классы java.util.logging. У меня есть тривиальный класс песочницы, содержащий следующий код:

package test;

import java.util.logging.Level;
import java.util.logging.Logger;

public class TestLogging {

public static void main(String[] args) {

@SuppressWarnings("unused")
TestLogging test = new TestLogging();   
}

public TestLogging() {

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

Logger logger = Logger.getLogger("test"); 
logger.logp(Level.CONFIG, "myClass", "myMethod", "Monday"); 
logger.logp(Level.FINE, "myClass", "myMethod", "Tuesday"); 
logger.logp(Level.FINER, "myClass", "myMethod", "Wednesday"); 
logger.logp(Level.FINEST, "myClass", "myMethod", "Thursday"); 
logger.logp(Level.INFO, "myClass", "myMethod", "Friday"); 
logger.logp(Level.SEVERE, "myClass", "myMethod", "Saturday"); 
logger.logp(Level.WARNING, "myClass", "myMethod", "Sunday");      
}
}

Мой файл logging.properties (опять же, без комментариев):

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level= ALL
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
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
x.y.level = SEVERE
x.y.z.level = WARNING
org.sscce.level = WARNING
org.sscce.baz3.level = INFO

Файл logging.properties находится в пути к классам в разделе Записи пользователя в конфигурации выполнения для этого класса.

Когда я выполняю класс, я получаю это на консоли:

file:/C:/Program%20Files/Java/jdk1.6.0_18/jre/lib/logging.properties
28-Feb-2012 2:05:55 PM myClass myMethod
INFO: Friday
28-Feb-2012 2:05:56 PM myClass myMethod
SEVERE: Saturday
28-Feb-2012 2:05:56 PM myClass myMethod
WARNING: Sunday

Я попросил, чтобы уровень ведения журнала на консоли был INFO, и это все, что у меня есть на консоли, так что эта часть, кажется, работает. Но когда я ищу свои физические журналы Java в% h, который является C: \ Documents and Settings [Мой идентификатор Windows], нет файлов, которые следуют шаблону javaX.log, где X - целое число.

Что я делаю не так? Программа не видит файл logging.properties? Или значения установлены каким-либо образом, чтобы предотвратить запись любого физического журнала?

Мне нужна помощь в отладке, потому что я не вижу ничего явно неправильного. Любой берущий?

1 Ответ

2 голосов
/ 28 февраля 2012

Чтобы найти файлы журнала, вам нужно знать, что %h соответствует значению в вашей переменной user.home.

Чтобы получить это, выполните: System.out.println("%h: " + System.getProperty("user.home"));

Вам необходимо также указать, какой файл свойств вы используете с System.property.Вот один из способов сделать это, в противном случае он использует значение по умолчанию, отличное от того, о котором вы, вероятно, думаете.

java -Djava.util.logging.config.file=mylogging.properties

Вы также можете сделать это программно, прежде чем начать использовать классы журналирования.

также

paths with spaces + Java == pain and suffering

и всегда используя / в качестве разделителя пути, Java будет делать правильные вещи, даже в Windows.

...